比较不同Hashmaps的键

时间:2010-12-28 17:59:23

标签: java

假设我在Java中有2个Map。我想将map1的键与map2的键进行比较,以查看2张地图中是否有任何类似的键。

我该怎么做?

4 个答案:

答案 0 :(得分:7)

如果您不想修改地图:

boolean thereAreCommonKeys = !Collections.disjoint(one.keySet(), two.keySet());

找到公共密钥:

Set<K> commonKeys = new HashSet<K>(one.keySet());
commonKeys.retainAll(two.keySet());

如果您的密钥是日期,它们可能应该是Comparable,在这种情况下,您可能需要TreeSet而不是HashSet,因为它会使它们按顺序排列。

答案 1 :(得分:1)

那样的东西?如果你不想从m1中删除那么你可以这样做 m3 = new(m1)

Map<Integer, Integer> m1 = new HashMap<Integer, Integer>();
Map<Integer, Integer> m2 = new HashMap<Integer, Integer>();

m1.put(1, 2);
m1.put(2, 3);

m2.put(1, 3);
m2.put(3, 4);

Map<Integer, Integer> m3 = new HashMap<Integer, Integer>(m1);  


Set s1 = m1.keySet();
Set s2 = m2.keySet();

System.out.println(s1);
System.out.println(s2);
System.out.println(s1.retainAll(s2));
System.out.println(s1);
System.out.println(s2);
System.out.println(m1);
System.out.println(m3);

答案 2 :(得分:1)

Google Maps.difference(..)图书馆的方法可让您更轻松地进行地图比对。

答案 3 :(得分:0)

boolean hasOverlap = m1.keySet().retainAll(m2.keySet());