比较java中的两个hashmaps以获得相等的键值

时间:2017-08-16 14:02:44

标签: java

我有两张地图:

Map1.put(a,1)
Map1.put(b,2)
Map1.put(c,3)
Map1.put(d,4)

Map2.put(a,1)
Map2.put(b,5)
Map2.put(c,3)
Map2.put(d,4)
Map2.put(e,6)
Map2.put(f,9)

如何比较Map1和Map2的相同键值?如果密钥在Map2中不匹配,则忽略该密钥。

3 个答案:

答案 0 :(得分:3)

获取每张地图的keySet()并使用ContainsAll()方法

    Map<String, Integer> Map1 = new HashMap<>();
    Map1.put("a", 1);
    Map1.put("b", 2);
    Map1.put("c", 3);
    Map1.put("d", 4);
    Map<String, Integer> Map2 = new HashMap<>();
    Map2.put("a", 1);
    Map2.put("b", 5);
    Map2.put("c", 3);
    Map2.put("d", 4);
    Map2.put("e", 6);
    Map2.put("f", 9);
    // check if all keys from Map1 are present in Map2
    System.out.println(Map2.keySet().containsAll(Map1.keySet()));

答案 1 :(得分:0)

尝试与条目交集。它将检查键和值并返回常用条目。

    Map<String, Integer> map1 = new HashMap<>();
    map1.put("a", 1);
    map1.put("b", 2);
    map1.put("c", 3);
    map1.put("d", 4);
    Map<String, Integer> map2 = new HashMap<>();
    map2.put("a", 2);
    map2.put("b", 3);
    map2.put("c", 4);
    map2.put("d", 5);
    map2.put("e", 6);
    map2.put("f", 9);


    Collection<Map.Entry<String, Integer>> commonValues = CollectionUtils.intersection(map1.entrySet(), map2.entrySet());

    System.out.println(CollectionUtils.isEmpty(commonValues)); // if empty, then no same key and value found.

单独使用键:

  Collection<String> commonKeys = CollectionUtils.intersection(map1.keySet(), map2.keySet()); 

答案 2 :(得分:0)

这是另一个简单的解决方案。

Map1.keySet().retainAll(Map2.keySet());

Map1.keySet()仅包含两个集合中的键