假设我有两张地图:
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经过一些操作。
答案 0 :(得分:1)
你可以使用这个方法,这里我使用了Generics,并且我使用了一个名称结果的TreeMap来保存两个HashMaps中的所有键,从这个方法你将获得Hashmaps中所有匹配的对象
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;
}
如果你想获得不同的值,只需反转check in result.put function