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

sla*_*omy 2 java algorithm java-8

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

Map<Long, List<Double>
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

List<Double>
Run Code Online (Sandbox Code Playgroud)

此结果列表中的每个项目表示一个键的值的总和.使用示例Map:

{1: [2.0, 3.0, 4.0],
 2: [1.5, 10.0]}
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

[9.0, 11.5]
Run Code Online (Sandbox Code Playgroud)

要么

[11.5, 9.0]
Run Code Online (Sandbox Code Playgroud)

(顺序无所谓).是否可以使用Java 8 merge()方法?实际上上面的情况有点简化,因为事实上我的List是用一些复杂的类进行参数化的,我想创建这个类的合并对象,但我只想在这里掌握一般的想法.

Jea*_*art 5

尝试:

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