StreamEx库似乎确实帮助我简洁地编写了Java8流,特别是在考虑映射时(例如,使用mapKeyValue,而不必手动解压缩映射项)。
如果我在地图中有一个条目流,在vanilla 8中,我可以这样对值进行求和:
someMap.entrySet().stream()
.mapToDouble(Entry::getValue)
.sum()我也可以在StreamEx中做到这一点,但我希望在StreamEx中看到一种更好的方法,尽管我能想出的最好方法是:
EntryStream.of(someMap)
.values()
.mapToDouble(d -> d)
.sum();这也没什么更好的。
还有更好的方法让我错过吗?
发布于 2016-02-22 16:01:54
由于您只对Map的值感兴趣,所以您只需要:
double sum = someMap.values().stream().mapToDouble(d -> d).sum();使用Stream本身。这将直接从映射的值创建一个Stream<Double>,映射到基本DoubleStream并返回和。
使用StreamEx,您可以将其简化为:
double sum = DoubleStreamEx.of(someMap.values()).sum();使用DoubleStreamEx.of直接获取Collection<Double>。
如果您已经有了一个EntryStream,那么您就没有比以下更简单的东西了:
double sum = entryStream.mapToDouble(Entry::getValue).sum();https://stackoverflow.com/questions/35558139
复制相似问题