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}
}