如何将带有List的地图转换为合并列表值集合的关键字?

时间:2015-08-18 22:53:45

标签: java algorithm java-8

我有一个看起来像这样的结构:

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是用一些复杂的类进行参数化的,我想创建这个类的合并对象,但我只想在这里掌握一般的想法。

1 个答案:

答案 0 :(得分:5)

尝试:

Map<Long, List<Double>> map = // ...
List<Double> sums = map.values()
                       .stream()
                       .map(l -> l.stream().mapToDouble(d -> d).sum())
                       .collect(Collectors.toList())