[英]Comparing two hashmaps in java and showing the values
我想比較 2 個哈希圖,如果值相同,請將這些值與鍵一起列出。 我該怎么做,因為 function equals()
返回真或假:/
提前感謝您的幫助:D
不幸的是,下面的代碼不起作用,為什么?
for (String s1 : MAP1.keySet())
{
for (String s2 : MAP2.keySet())
{
if (MAP_SAP.get(s1).equals(MAP2.get(s2)))
{
MAP3.put(key,value); // I believe that it has to be added otherwise
}
}
}
print("eee:");
for (Map.Entry entry : MAP3.entrySet())
{
System.out.println("Numer: " + entry.getValue() + ", ID: " + entry.getKey() );
}
最天真的方法是遍歷第一個 map 的值,並檢查第二個 map 中是否有相等的值。
考慮到這兩個映射存儲字符串類型的鍵和值,代碼看起來像這樣。
for (String s1 : map1.keySet()) {
for (String s2 : map2.keySet()) {
if (map1.get(s1).equals(map2.get(s2))) {
// print or do whatever with keys & the value
// also, if you just need ONE match, then break out of inner loop here
}
}
}
您說您想將這兩個值都存儲在 MAP3 中。 然后我想知道您要使用哪個鍵。 根據您的說法,我假設如果 s1 和 s2 的值相等,那么鍵 s1 和 s2 也相等。 否則,map1 和 map2 中的一對值具有“一個鍵”是沒有意義的。 此外,您在 if 語句中提到了第四個 map MAP_SAP。 我猜您的意思是 MAP1,否則您必須確保 MAP_SAP 確實包含您從 MAP1 獲得的密鑰 s1。
//initialize MAP3 before starting the loops
for (String s1 : MAP1.keySet()){
for (String s2 : MAP2.keySet()) {
if (MAP1.get(s1).equals(MAP2.get(s2))){
String key = s1; //or another key e.g. s1+s2
String value = MAP1.get(s1);
MAP3.put(key, value);
}
}
}
print("eee:");
for (Map.Entry entry : MAP3.entrySet()){
System.out.println("Number: " + entry.getValue() + ", ID: " + entry.getKey() );
}
//alternatively you can use
// MAP3.forEach((key, value) -> System.out.println("Number: " + value + ", ID: " + key));
´´´
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.