java语言,我有一个List<Map<String,Integer>>类型的数据,我希望返回一个Map<String,Integer>对象,这个对象是集合每个map的相同key之和
时间: 2024-05-08 07:22:02 浏览: 139
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
你可以遍历List中的每个Map,将每个Map中的key-value对加入到一个新的Map中,如果key相同,则将对应的value相加。可以使用Java8的stream API来实现:
```
List<Map<String, Integer>> list = ...; // 初始化List<Map<String, Integer>>对象
Map<String, Integer> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
Integer::sum));
```
解释一下上面的代码:首先调用`stream()`方法将List转换成Stream对象,然后使用`flatMap()`方法将每个Map转换成一个由其entry组成的Stream对象,最后使用`collect()`方法将所有entry收集成一个新的Map对象,其中`toMap()`方法的第三个参数是一个BinaryOperator对象,用于处理key相同的情况,这里使用`Integer::sum`表示将对应的value值相加。
阅读全文