map合并相同的key的value
时间: 2023-03-03 13:05:55 浏览: 161
如果你想要合并一个Map中相同Key的Value,你可以使用Java中的Map的merge方法。这个方法接收三个参数:Key,Value和一个函数式接口,用于在值冲突时决定该怎么合并这些值。这个函数式接口接收两个参数:旧值和新值,它们可以被用于决定合并后的最终值。
举个例子,假设我们有两个Map,分别是Map1和Map2:
```
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", 3);
map2.put("C", 4);
map2.put("D", 5);
```
如果我们想要将这两个Map合并成一个Map,可以使用以下代码:
```
Map<String, Integer> mergedMap = new HashMap<>(map1);
map2.forEach((key, value) ->
mergedMap.merge(key, value, Integer::sum)
);
```
这个代码会先将Map1复制到mergedMap中,然后遍历Map2中的所有键值对,对于每个键值对,它会尝试将其合并到mergedMap中。如果键已经存在于mergedMap中,merge方法会使用sum函数来将两个值相加,否则它会将键值对直接添加到mergedMap中。最终的mergedMap应该是这样的:
```
{A=1, B=5, C=7, D=5}
```
注意,如果你要使用TreeMap,那么在遍历Map2时,需要按照Key的自然顺序进行遍历,否则可能会得到意想不到的结果。