繁体   English   中英

Java列表 <Map<String, Long> &gt;地图键组的总和

[英]Java List<Map<String, Long>> sum of group by of map key

我有一个: List<Map<String, Long>> items = new ArrayList<>();

我想得到一个Map,其中键被分组,值是总和。

示例:列表

  • 项目0
    • foo - > 1
    • 吧 - > 2
  • 第1项
    • foo - > 4
    • 吧 - > 3

结果:地图

  • foo - > 5
  • 吧 - > 5

我知道如何以“长”方式执行此操作,但尝试使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM