【发布时间】:2018-05-03 17:33:32
【问题描述】:
我需要按照以下规则合并第一个中的两个地图:
我需要从map1 中删除map2 中不存在的所有密钥。
我需要使用这些键下map2 中存在的适当值来更新map1 中的所有键。
这是我当前的代码:
Set<String> keysToRemove = new HashSet<>();
map1.forEach((k, v) -> {
if (!map2.containsKey(k)) {
keysToRemove.add(k);
} else {
map1.put(k, map2.get(k));
}
});
for (String k : keysToRemove) {
map1.remove(k);
}
我不确定我的代码是否最佳并且可以改进。能否请您说明如何更有效地执行此任务?
【问题讨论】:
-
根据您的要求,似乎需要将
map1制作成map2的副本。这是你的意图吗? -
是的,我只需创建 map2 的副本并将 map1 设置为该副本
-
我正在尝试解决以下问题 - stackoverflow.com/questions/50149323/… 所以我尝试在原始地图1 上保留相同的参考,并且不要用新地图替换它。
-
所以只需
clear()和putAll(map2)。