我有一个看起来像这样的结构:
Map<Long, List<Double>
我想将其转换为
List<Double>
此结果列表中的每个项目表示一个键的值的总和。使用示例Map:
{1: [2.0, 3.0, 4.0],
2: [1.5, 10.0]}
我想实现结果:
[9.0, 11.5]
或
[11.5, 9.0]
(顺序无所谓)。 是否可以使用Java 8 merge()方法? 实际上上面的情况有点简化了,因为事实上我的List是用一些复杂的类进行参数化的,我想创建这个类的合并对象,但我只想在这里掌握一般的想法。
答案 0 :(得分:5)
尝试:
Map<Long, List<Double>> map = // ...
List<Double> sums = map.values()
.stream()
.map(l -> l.stream().mapToDouble(d -> d).sum())
.collect(Collectors.toList())