
[英]Java 8 stream Map<String, List<String>> sum of values for each key
[英]Java List<Map<String, Long>> sum of group by of map key
我有一个: List<Map<String, Long>> items = new ArrayList<>();
我想得到一个Map,其中键被分组,值是总和。
示例:列表
结果:地图
我知道如何以“长”方式执行此操作,但尝试使用java 8功能发现lambda / streaming / groupby方法。 有什么想法吗?
您可以使用groupingBy
collector:
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.summingLong;
items.stream()
.flatMap(m -> m.entrySet().stream())
.collect(groupingBy(Map.Entry::getKey, summingLong(Map.Entry::getValue)));
或者您可以使用toMap
:
import static java.util.stream.Collectors.toMap;
items.stream()
.flatMap(m -> m.entrySet().stream())
.collect(toMap(Map.Entry::getKey, Map.Entry::getValue, Long::sum));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.