我有:List<Map<String, Long>> items = new ArrayList<>();
我想得到一个 Map,其中键是分组的,值是总和。
示例:列表
结果: map
我知道如何以“长”的方式做到这一点,但试图发现使用 java 8 功能的 lambda/streaming/groupby 方法。有什么想法吗?
最佳答案
您可以使用 groupingBy
集电极:
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));
关于Java List<Map<String, Long>> 映射键的分组总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34325389/