Java 如何通过键和值比较两个映射,并将差异映射存储在结果映射中

Java 如何通过键和值比较两个映射,并将差异映射存储在结果映射中,java,map,hashmap,Java,Map,Hashmap,假设我有两张地图: Map mapA = new HashMap(); Map mapB = new HashMap(); mapA.put("JEETENDRA", "24"); mapA.put("AHUJA", "24"); --1A mapA.put("AHUJA", "25");---2A mapA.put("PAL", "24"); mapB.put("AHUJA", "24"); mapB.put("JEETENDRA", "24");---1B mapB.put("PAL",

假设我有两张地图:

Map mapA = new HashMap();
Map mapB = new HashMap();

mapA.put("JEETENDRA", "24");
mapA.put("AHUJA", "24"); --1A
mapA.put("AHUJA", "25");---2A
mapA.put("PAL", "24");

mapB.put("AHUJA", "24");
mapB.put("JEETENDRA", "24");---1B
mapB.put("PAL", "24");
现在我想通过键和值来比较这两个映射,因为2A和1A有键公共。 理想情况下,我知道它是错误的,因为键对于map应该是唯一的,但在代码中,我检索两列记录并将其存储为map

MapA在操作之前进行。

MapB是在一些操作之后进行的。

您可以使用这个方法,这里我使用了泛型,我使用了一个名为result的树映射来保存两个hashmap中的所有键,通过这个方法您将获得hashmap中所有匹配的对象

public static <K extends Comparable<? super K>, V>
    Map<K, Boolean> compareKeysAndValues(final Map<K, V> map1,
        final Map<K, V> map2){
        final Collection<K> allKeys = new HashSet<K>();
        allKeys.addAll(map1.keySet());
        allKeys.addAll(map2.keySet());
        final Map<K, Boolean> result = new TreeMap<K, Boolean>();
        for(final K key : allKeys){
            result.put(key,
                map1.containsKey(key) == map2.containsKey(key) &&
                Boolean.valueOf(equal(map1.get(key), map2.get(key))));
        }
        return result;
    }

public static
mapA
不存在,因此无法检查。您知道值1A将被删除。“在这个映射中将指定的值与指定的键相关联。如果该映射以前包含了键的映射,则替换旧的值。”——您可能需要考虑嵌套的数据结构,如<代码> MAP>代码>来存储与单个键相关联的多个值。MAPA只对键“AHuja”有一个条目,由于现有密钥的值在
put
上被覆盖。您能建议我使用合适的集合吗?我不想专门使用Google的Guava library。谢谢你,伙计!!!这个问题真的毫无意义。您希望比较两个地图并存储“结果”,但从未指明比较的内容。此外,正如其他人指出的那样,您违反了基本的映射行为(“1A”在映射中不存在,“AHUJA”在您的代码中只有“25”的值)。您注意到这是“理想错误”(这不仅是理想错误,事实上也是错误的),但对此不作任何调整或解释。@user3271997欢迎,如果它看起来完美,请单击正确的标记将其标记为正确