Gra*_*oss 8 java java-8 java-stream streamex
StreamEx库似乎真正帮助我简明地编写Java 8流,特别是在考虑地图时(mapKeyValue例如,使用手动取消打包地图条目).
如果我在地图中有一个条目流,在vanilla Java 8中我可以用这样的方式对值进行求和:
someMap.entrySet().stream()
.mapToDouble(Entry::getValue)
.sum()
Run Code Online (Sandbox Code Playgroud)
我也可以在StreamEx中执行此操作,但我希望在StreamEx中看到更好的方法,尽管我能想到的最好方法是:
EntryStream.of(someMap)
.values()
.mapToDouble(d -> d)
.sum();
Run Code Online (Sandbox Code Playgroud)
这不是更好.
有没有更好的方法让我失踪?
既然你只对它的价值感兴趣Map,你可以:
double sum = someMap.values().stream().mapToDouble(d -> d).sum();
Run Code Online (Sandbox Code Playgroud)
使用Stream API本身.这将Stream<Double>直接从地图的值创建,将其映射到基元DoubleStream并返回总和.
使用StreamEx,您可以将其简化为:
double sum = DoubleStreamEx.of(someMap.values()).sum();
Run Code Online (Sandbox Code Playgroud)
使用DoubleStreamEx.of直接在服用Collection<Double>.
如果你已经有了EntryStream,你将无法拥有比以下更简单的东西:
double sum = entryStream.mapToDouble(Entry::getValue).sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |