如何比较两个hashmap/hashtable,只找到唯一的密钥


Hashtable h1=new Hashtable<>();
h1.put(1, "abc");
h1.put(2, "xyz");
h1.put(26, "jhd");

Hashtable h2=new Hashtable<>();
h2.put(1, "da");
h2.put(2, "bfdsae");
h2.put(8, "sdasd");
Hashtable h3= new Hashtable<>();
below two output musst add in h3.

预期O/p是:-8,"星期四"26,"jhd"当我将两个哈希表相互比较时,必须产生上述所需的输出。

使用谷歌番石榴,您可以通过Maps.difference:获得此功能

MapDifference<Integer, String> difference = Maps.difference(h1, h2);
h3.putAll(difference.entriesOnlyOnLeft());
h3.putAll(difference.entriesOnlyOnRight());

它在h3中为您提供{8=sdasd, 26=jhd}

遍历h1并检查h2中是否存在,如果不存在,则放入h3。类似地,遍历h2并检查h1中是否存在,如果不存在,则放入h3。
Hashtable h1=new Hashtable<>();
h1.put(1, "abc");
h1.put(2, "xyz");
h1.put(26, "jhd");

Hashtable h2=new Hashtable<>();
h2.put(1, "da");
h2.put(2, "bfdsae");
h2.put(8, "sdasd");
Hashtable h3= new Hashtable<>();
Set<String> keys = h1.keySet();
for(String k: keys){
if(!h2.containsKey(k)) {
h3.put(k, h1.get(k));
}
}
Set<String> keysH2 = h2.keySet();
for(String k: keys){
if(!h1.containsKey(k)) {
h3.put(k, h2.get(k));
}
}

最新更新