举个例子:
Syntax :
Map<String,Map<String,String>> A = new HashMap<>();
Map<String,Map<String,String>> B = new HashMap<>();
Implementation :
Map<TableA,Map<AID,AVAL>> A = new HashMap<>();
Map<TableB,Map<BID,BVAL>> B = new HashMap<>();
根据键TableA
和AID
和TableB
和BID
比较HashMaps A和B
迭代这些哈希图的优化方法是什么?
答案 0 :(得分:2)
与比较地图相比,您应该更好地定义您的意思。您要比较键和值吗?您可以制作第二张地图的副本,在第一张地图上循环,然后从第二张地图的副本中删除第一张地图的钥匙。第二个副本的剩余键是第二个而不是第一个的。另一方面,在第一个而不是第二个中,您不会在周期中找到它们。
答案 1 :(得分:1)
两个Map不一定具有相同数量的元素和给定的map 不能有任何元素。当我们比较两个地图时,如果两个地图相等 没事。如果两者不相等,我想识别(打印)一张地图中的元素,而不是另一张地图中的元素。
Map<String,String> map1 = new HashMap<String,String>();
map1.put("A", "B");
map1.put("C","D");
map1.put("E","F");
map1.put("E","G");
Map<String,String> map2 = new HashMap<String,String>();
map2.put("A", "B");
map2.put("C","D");
map2.put("E","F");
map2.put("F","F");
map2.put("G","G");
if (map1.entrySet().containsAll(map2.entrySet())) {
System.out.println("Map2 is a subset of Map1");
}
else { // find map pairs that are in set 1 but not in set 2
// expected result is key = E and value = G
}
if (map2.entrySet().containsAll(map1.entrySet())) {
System.out.println("Map1 is a subset of Map2");
}
else { // find map pairs that are in set 2 but not in set 1
// expected result is key=F, value=F and key=G, value=G
}
//compare each entry of map
for (final String key : map2.keySet()) {
if (map1.containsKey(key)) {
System.out.println("Value:" + map1.get(key));
}
}
答案 2 :(得分:1)
我尝试过,您必须通过keySet进行TableA和TableB的比较
Iterator<Map.Entry<TableA ,Map<AID,AVAL>> itr1 = A.entrySet().iterator();
Iterator<Map.Entry<TableB ,Map<BID,BVAL>> itr2 = A.entrySet().iterator();
while(itr1.hasNext() && itr2.hasNext())
{
Map.Entry<TableA ,Map<AID,AVAL>> entry1 = itr1.next();
Map.Entry<TableB ,Map<BID,BVAL>> entry2 = itr2.next();
if((entry1.getKey().equals(entry2.getKey()))
Sop("match");
else Sop("Not FOund");
}