Collections 如何使用相同的键在hashmap中添加值,以及何时将值存储为另一个hashmap

Collections 如何使用相同的键在hashmap中添加值,以及何时将值存储为另一个hashmap,collections,java-8,maps,Collections,Java 8,Maps,我有一个映射列表,如果键相等,我想添加值。值也存储为映射。作为输出,我需要一个单独的映射,如下面的示例所示 我预计产量为 [ {user1={service1=10.24, service2=0.11, service3=18.76}}, {user1={service1=200.25, service2=0.05, service4=0.00}} {user2={service1=50.25, service4=0.05, service5=0.00}} ] 将来

我有一个映射列表,如果键相等,我想添加值。值也存储为映射。作为输出,我需要一个单独的映射,如下面的示例所示

我预计产量为

[
    {user1={service1=10.24, service2=0.11, service3=18.76}}, 
    {user1={service1=200.25, service2=0.05, service4=0.00}}
    {user2={service1=50.25, service4=0.05, service5=0.00}}
]
将来


它是不同收集器的组合:

Map<String, Map<String, Double>> map = list.stream()
            .flatMap(m -> m.entrySet().stream())
            .collect(Collectors.groupingBy(Map.Entry::getKey,
                    Collectors.flatMapping(m -> m.getValue().entrySet().stream(),
                    Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Double::sum))));

变量的声明是什么样子的<代码>列表?不要通过文本输出定义任务。
Map<String, Map<String, Double>> map = list.stream()
            .flatMap(m -> m.entrySet().stream())
            .collect(Collectors.groupingBy(Map.Entry::getKey,
                    Collectors.flatMapping(m -> m.getValue().entrySet().stream(),
                    Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Double::sum))));
List<Map<String, Map<String, Double>>> list = List.of(
         Map.of("user1", Map.of("service1", 10.24, "service2", 0.11, "service3", 18.76)),
         Map.of("user1", Map.of("service1", 200.25, "service2", 0.05, "service3", 0.0)),
         Map.of("user2", Map.of("service1", 50.25, "service2", 0.05, "service3", 0.0))
);
{
 user1={service2=0.16, service1=210.49, service3=18.76}, 
 user2={service2=0.05, service1=50.25, service3=0.0}
}