980280089@qq.com java 中有 map1为{2023-03-08=2, 2023-03-15=2, 2023-03-20=2}, map2为{2023-03-10=5, 2023-03-15=10, 2023-03-21=5}。 如何得到map3 {2023-03-08=2,2023-03-10=7, 2023-03-15=21, 2023-03-20=23,2023-03-21=28} 
时间: 2023-04-10 17:02:52 浏览: 28
可以使用以下代码实现:
```
Map<String, Integer> map1 = new HashMap<>();
map1.put("2023-03-08", 2);
map1.put("2023-03-15", 2);
map1.put("2023-03-20", 2);
Map<String, Integer> map2 = new HashMap<>();
map2.put("2023-03-10", 5);
map2.put("2023-03-15", 10);
map2.put("2023-03-21", 5);
Map<String, Integer> map3 = new HashMap<>();
for (Map.Entry<String, Integer> entry : map1.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if (map2.containsKey(key)) {
value += map2.get(key);
}
map3.put(key, value);
}
for (Map.Entry<String, Integer> entry : map2.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if (!map1.containsKey(key)) {
map3.put(key, value);
}
else {
value += map1.get(key);
map3.put(key, value);
}
}
```
这段代码首先创建了两个 Map 对象 map1 和 map2,分别存储了两个日期和对应的值。然后创建了一个新的 Map 对象 map3,用于存储合并后的结果。
接着使用 for 循环遍历 map1 中的每个键值对,如果 map2 中也包含相同的键,则将两个值相加,否则直接将 map1 中的值存入 map3 中。
然后再使用 for 循环遍历 map2 中的每个键值对,如果 map1 中不包含相同的键,则直接将 map2 中的值存入 map3 中,否则将两个值相加,并将结果存入 map3 中。
最终得到的 map3 就是合并后的结果。
相关推荐
















