是否有一种简单/优雅的方法来对列表中每个键的列表中的数字求和,例如我想从Map<String, List<BigDecimal>>
获得Map<String, BigDecimal>
吗?我找不到它/把它弄清楚了...
答案 0 :(得分:8)
要从Map<String, List<BigDecimal>>
更改为Map<String, BigDecimal>
,有两个步骤:
第一步:使用Collectors.toMap
将旧地图的键移到新地图。
第二步:您必须对List<BigDecimal>
的所有元素求和,其中一种方法是使用e.getValue().stream().reduce(BigDecimal.ZERO, BigDecimal::add)
最后,您的代码如下所示:
Map<String, BigDecimal> result = map.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e -> e.getValue().stream().reduce(BigDecimal.ZERO, BigDecimal::add))
);
答案 1 :(得分:2)
$argv