将10个map进行合并,相同key值的value值相加,最快的方法
时间: 2024-02-17 13:05:19 浏览: 140
可以使用 Java 8 的 `Map.merge()` 方法来合并多个 Map,并且处理键值冲突的方法可以使用 Lambda 表达式来实现。
下面是一个示例代码:
```java
Map<String, Integer> result = new HashMap<>();
List<Map<String, Integer>> maps = new ArrayList<>();
// 添加10个Map到列表中
for (int i = 0; i < 10; i++) {
Map<String, Integer> map = new HashMap<>();
map.put("key1", i);
map.put("key2", i + 1);
maps.add(map);
}
// 使用Map.merge()方法合并Map
maps.forEach(map -> map.forEach((key, value) ->
result.merge(key, value, Integer::sum)));
System.out.println(result);
```
运行结果为:
```
{key1=45, key2=55}
```
在这个示例中,我们首先创建了一个空的 Map,然后创建了一个包含 10 个 Map 的列表。在使用 `Map.merge()` 方法合并 Map 时,我们使用了方法引用 `Integer::sum` 来处理键值冲突,将相同键的值相加。最后输出合并后的 Map。
需要注意的是,如果存在大量的 Map 需要合并,这种方法可能会导致性能问题。在这种情况下,可以考虑使用并发集合(如 ConcurrentHashMap)来提高合并的效率。
阅读全文