Mic*_*cki 1 java java-8 java-stream
我有一张看起来像这样的地图:
Map<String,String[]> urlFormEncoded = new HashMap<String,String[]>();
Run Code Online (Sandbox Code Playgroud)
我想将存储在String []数组中的所有值作为double值求和,我试过这样的事情:
double requestAmount = urlFormEncoded.entrySet().stream().mapToDouble(k -> Arrays.stream(k.getValue()).).sum();
Run Code Online (Sandbox Code Playgroud)
但不幸的是我不知道如何将此String []转换为值:(我想使用流和lambda表达式来做到这一点
第一步是将每个转换String[]为a DoubleStream.
Arrays.stream(arr).mapToDouble(Double::valueOf)
Run Code Online (Sandbox Code Playgroud)
然后你必须得到flatMap那些流来获得单个DoubleStream所有double值.
.flatMapToDouble(arr -> Arrays.stream(arr).mapToDouble(Double::valueOf))
Run Code Online (Sandbox Code Playgroud)
所以你最终得到:
double requestAmount =
urlFormEncoded.values()
.stream()
.flatMapToDouble(arr -> Arrays.stream(arr).mapToDouble(Double::valueOf))
.sum();
Run Code Online (Sandbox Code Playgroud)
请注意,entrySet()如果您计划仅对值进行操作,则无需使用,您可以直接使用values().
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |