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

标签 java dictionary hashmap

假设我有两张 map :

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");

现在我想通过键和值比较两个 map ,因为 2A 和 1A 有共同的键。 我知道理想情况下它是错误的,因为键对于 map 来说应该是唯一的,但在代码中我正在检索两列记录并将其存储为 map 。

MapA 在操作之前。
MapB 经过一些操作。

最佳答案

你可以使用这种方法,这里我使用了泛型,并且我使用了一个名为 result 的 TreeMap 来保存两个 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;
    }

如果您想获取不同的值,只需反转 result.put 函数中的检查即可

关于java - 如何通过键和值比较两个映射并将差异映射存储在结果映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559811/

相关文章:

c# - 在集合初始值设定项中使用条件

python - 按每个列表中的第二个元素对列表字典进行排序

java - 如何在 Spring Data JPA 中表示带有空值的表?

java - 可以使用java中的包装类交换两个数字而不创建任何其他类吗?

java - 如何反序列化 java 属性文件中给定的 bean?

java - 如何通过抽象类实现函数指针的 Java 等价物

python - 比较具有不同键的嵌套字典

java - 是否存在 Java 7's Hashmap implementation is preferred to Java8' s 实现的场景

java - 如何比较两个 HashMap<String, List<String>> 以列表项作为值,以检查 hMap1 中的值是否存在于 hMap2 中

c++ - 使用指向映射的指针从其键访问映射的值