list 中 map合并
时间: 2023-08-01 10:06:05 浏览: 100
如果要将多个 `Map` 合并为一个 `Map`,可以使用 `putAll()` 方法将所有的 `Map` 中的键值对添加到一个新的 `Map` 中,其中键不能重复,如果有重复的键会覆盖原来的值。示例如下:
```java
List<Map<String, Integer>> list = new ArrayList<>();
Map<String, Integer> result = new HashMap<>();
// 假设有两个 Map
Map<String, Integer> map1 = new HashMap<>();
map1.put("A", 1);
map1.put("B", 2);
Map<String, Integer> map2 = new HashMap<>();
map2.put("C", 3);
map2.put("D", 4);
// 添加到 List 中
list.add(map1);
list.add(map2);
// 将 List 中的 Map 合并到 result 中
for (Map<String, Integer> map : list) {
result.putAll(map);
}
System.out.println(result); // 输出 {A=1, B=2, C=3, D=4}
```
如果需要保留重复的键值对,可以使用 `merge()` 方法,示例如下:
```java
List<Map<String, Integer>> list = new ArrayList<>();
Map<String, Integer> result = new HashMap<>();
// 假设有两个 Map
Map<String, Integer> map1 = new HashMap<>();
map1.put("A", 1);
map1.put("B", 2);
Map<String, Integer> map2 = new HashMap<>();
map2.put("B", 3);
map2.put("C", 4);
// 添加到 List 中
list.add(map1);
list.add(map2);
// 将 List 中的 Map 合并到 result 中
for (Map<String, Integer> map : list) {
map.forEach((key, value) -> result.merge(key, value, Integer::sum));
}
System.out.println(result); // 输出 {A=1, B=5, C=4}
```
上述示例中,`merge()` 方法的第一个参数是键,第二个参数是值,第三个参数是一个函数,用于处理重复的键值对。在这个例子中,如果遇到重复的键,使用 `Integer::sum` 函数将原来的值和新值相加。
阅读全文