java用最少的代码将多个map中相同的key的值合并在一起成一个新的map
时间: 2023-11-27 19:50:46 浏览: 114
可以使用Java 8的Stream API来实现这个功能。以下是一个示例代码:
```
import java.util.*;
import java.util.stream.*;
public class MergeMaps {
public static void main(String[] args) {
Map<String, Integer> map1 = new HashMap<>();
map1.put("a", 1);
map1.put("b", 2);
map1.put("c", 3);
Map<String, Integer> map2 = new HashMap<>();
map2.put("b", 4);
map2.put("c", 5);
map2.put("d", 6);
Map<String, Integer> mergedMap = Stream.of(map1, map2)
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum));
System.out.println(mergedMap);
}
}
```
在这个示例中,我们首先创建了两个Map对象 `map1` 和 `map2`。然后,我们将这两个Map对象合并为一个新的Map对象 `mergedMap`。具体来说,我们使用流的 `flatMap()` 方法将所有的Entry对象合并成一个Stream对象,然后使用 `Collectors.toMap()` 方法将这些Entry对象收集到一个新的Map对象中。在这个 `toMap()` 方法中,我们使用了一个合并函数 `Integer::sum`,用于将相同键的值相加,以生成合并后的值。最后,我们打印输出了合并后的Map对象。
阅读全文