假设我有两张 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/