[英]Compare two hashmaps of hashmap
我有兩個哈希圖 hash map。 對於一個實例讓,
Hashmap map1 = key: mapview Value: {backgroundimage=character varying, mapviewname=character varying, mapviewid=character} key: am_mypage_template_mgs Value: {resourceid=integer, pageid=integer} key: am_tomcatinfo Value: {resourceid=bigint, url=character varying, sslenabled=character varying}
Hashmap map2 = key: mapview Value: {backgroundimage=character varying, mapviewname=character varying, mapviewid=integer} key: am_mypage_template_mgs Value: {resourceid=integer}
我必須比較這兩個並找出 map2 中缺少哪些鍵. 如果存在鍵,我必須比較內部映射並將 map1 的內部映射的鍵與 map2 的內部映射進行比較。 如果存在鍵,我必須將對應於 map1 的內部映射的值與 map2 進行比較。 我的代碼是,
map1.entrySet().forEach(entry -> {
if (map2.containsKey(entry.getKey())) {
if (entry.getValue().equals(map2.get(entry.getKey()))) {
count++;
} else {
entry.getValue().entrySet().forEach(inside_entry->{
if(map2.get(entry.getKey()).containsKey(inside_entry.getKey())) {
Map<String, String> n = new HashMap<String, String>();
n.putAll(map2.get(entry.getKey()));
if((inside_entry.getValue()).equals(map2.get(n))){
}
else {
System.out.println("Tablename1 : "+ entry.getKey() +" Key :"+inside_entry.getKey()+" value : "+inside_entry.getValue());
}
}
});
System.out.println(entry.getValue());
}
} else {
System.out.println("\"" + entry.getKey() + "\" entire table is not found");
}
});
我的Output應該是這樣的,
key am_tomcatinfo in map1 missing in map2
In am_mypage_template_mgs, pageid in map1 is missing in map2
In mapview, mapviewid=character in map1 is not equal to mapviewid=integer in map2
我應該怎么辦?
根據您的描述,直接的方法是使用兩個映射的forEach()
(而不是entrySet().forEach()
)來比較鍵和值,如下所示:
map1.forEach((k0, v0) -> {
if (!map2.containsKey(k0)) {
System.out.println(String.format("key %s in map1 missing in map2", k0));
} else {
v0.forEach((k1, v1) -> {
if (!map2.get(k0).containsKey(k1)) {
System.out.println(String.format("In %s, %s in map1 is missing in map2", k0, k1));
} else {
if (!v1.equals(map2.get(k0).get(k1))) {
System.out.println(String.format("In %s, %s=%s in map1 is not equal to %s=%s in map2", k0, k1, v1, k1, map2.get(k0).get(k1)));
}
}
});
}
});
而控制台 output 是
在 am_mypage_template_mgs 中,map2 中缺少 map1 中的 pageid
map1 中的鍵 am_tomcatinfo 在 map2 中丟失
在mapview中,map1中的mapviewid=character不等於map2中的mapviewid=integer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.