You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比两个Map集合并返回new_hash_map中的有效键值对Map

嘿,我来帮你搞定这个Map对比的需求!先把你给出的两个LinkedHashMap初始化代码整理好,方便后续使用:

Map<String, String> hash_map = new LinkedHashMap<String, String>();
Map<String, String> new_hash_map = new LinkedHashMap<String, String>();

hash_map.put("AA", "Geeks");
hash_map.put("BB", "4");
hash_map.put("CC", "Geeks");
hash_map.put("DD", "Welcomes");
hash_map.put("EE", "You");

new_hash_map.put("BB", "4");
new_hash_map.put("EE", "You");
new_hash_map.put("FF", "Me");

不过这里需要先明确一下你说的**“有效键值对”**具体指什么?通常这类需求有两种常见场景,我分别给出实现方案:

场景1:保留new_hash_map中与hash_map键值完全匹配的条目

也就是只留下new_hash_map里那些在hash_map中存在,并且对应值完全相同的键值对。

实现代码:

Map<String, String> validMap = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : new_hash_map.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    // 校验:hash_map包含该键,且值一致
    if (hash_map.containsKey(key) && value.equals(hash_map.get(key))) {
        validMap.put(key, value);
    }
}
// 执行后validMap的内容:{BB=4, EE=You}
System.out.println(validMap);

场景2:保留new_hash_map中新增或修改过的条目

也就是留下new_hash_map里那些hash_map中没有的键,或者键存在但值和hash_map不一样的条目(相当于提取new_hash_map相对hash_map的变更内容)。

实现代码:

Map<String, String> validMap = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : new_hash_map.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    // 校验:hash_map不包含该键,或者值不一致
    if (!hash_map.containsKey(key) || !value.equals(hash_map.get(key))) {
        validMap.put(key, value);
    }
}
// 执行后validMap的内容:{FF=Me}
System.out.println(validMap);

如果你的“有效键值对”是其他定义,比如只保留hash_map中没有的键,或者有其他规则,可以随时补充说明,我再调整代码~

内容的提问来源于stack exchange,提问作者NarraVasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:39:06