簡體   English   中英

比較 java 中的兩個哈希圖並顯示值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM