如何对比两个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
相关产品推荐
相关产品推荐

