gpt4 book ai didi

Java 合并两个映射

转载 作者:行者123 更新时间:2023-12-02 02:09:57 24 4
gpt4 key购买 nike

我需要按照以下规则合并第一个 map 中的两个 map :

我需要从 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);
}

我不确定我的代码是否最优并且可以改进。您能否介绍一下如何更有效地实现这项任务?

最佳答案

两行代码即可实现

这个解决方案基于评论(给人的印象是OP希望map1是map2的精确副本)

[...]我尝试在原始 map 1 上保留相同的引用,并且不要用新 map 替换它。[原文如此]

//Retains only those keys that are in map2
map1.keySet().retainAll(map2.keySet());

//(Possibly) Overwrite value for each key in map2 into map1
map2.forEach(map1::put);

但我不相信这会帮助您提高性能。

编辑:正如 Jacob G.@ 所建议的,您可以在最后一行使用 map1.putAll(map2)

编辑2:

如果我们考虑OP(而不是注释),如果map2中存在map1中不存在的任何键,它不应该出现在map1中,因此最后一条语句将变为

map1.forEach((key, value) -> map1.put(key, map2.get(key)));

关于Java 合并两个映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com