stream合并多个HashMap<String,Integer>并去重
时间: 2023-07-02 08:05:35 浏览: 100
可以使用Java 8的Stream API来实现合并多个HashMap并去重。具体步骤如下:
1. 将多个HashMap合并为一个Stream
2. 使用flatMap将每个HashMap中的entrySet映射为一个Stream
3. 使用toMap方法将所有entry合并到一个新的HashMap中,如果有重复的key,则使用后面的value替换前面的value
下面是示例代码:
```java
List<HashMap<String, Integer>> hashMapList = new ArrayList<>();
// 假设有3个HashMap需要合并
hashMapList.add(new HashMap<>(){{put("a", 1); put("b", 2);}});
hashMapList.add(new HashMap<>(){{put("c", 3); put("d", 4);}});
hashMapList.add(new HashMap<>(){{put("a", 5); put("e", 6);}});
Map<String, Integer> mergedMap = hashMapList.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum));
System.out.println(mergedMap); // 输出 {a=6, b=2, c=3, d=4, e=6}
```
可以看到,最终合并后的HashMap中,key为"a"的value值为之前三个HashMap中的值相加得到的6,其他key的value值则为对应HashMap中的值。去重后的结果与预期一致。
阅读全文