我有一张如下所示的地图:
Map<String,String[]> urlFormEncoded = new HashMap<String,String[]>();
我希望将存储在String []数组中的所有值加总为double值 我试过这样的事情:
double requestAmount = urlFormEncoded.entrySet().stream().mapToDouble(k -> Arrays.stream(k.getValue()).).sum();
但遗憾的是我不知道如何将此String []转换为值:( 我想使用流和lambda表达式
来做到这一点答案 0 :(得分:8)
第一步是将每个String[]
转换为DoubleStream
。
Arrays.stream(arr).mapToDouble(Double::valueOf)
然后,您必须flatMap
这些流才能获得所有DoubleStream
值的double
个。{/ p>
.flatMapToDouble(arr -> Arrays.stream(arr).mapToDouble(Double::valueOf))
所以你最终得到:
double requestAmount =
urlFormEncoded.values()
.stream()
.flatMapToDouble(arr -> Arrays.stream(arr).mapToDouble(Double::valueOf))
.sum();
请注意,如果您打算仅使用值,则不需要使用entrySet()
,您可以直接使用values()
。