2017-11-11 105 views
-3

我會解釋的情況下,我有兩個哈希地圖讓我們如何比較基於鍵2個包含HashMap,如果值不匹配,我需要打印的不匹配項和值

Map<String,String> map_A = new HashMap<>(); 

mapA.put("Name", "Jerry"); 
mapA.put("State", "Texas"); 

Map<String,String> map_B = new HashMap<>(); 

mapB.put("Name","TOM"); 
mapB.put("State", "Texas"); 

我的鑰匙將是相同的在所有情況下。

預期輸出:

名稱傑裏湯姆不匹配

我只需要打印的情況下,如果有一個不匹配。

+0

你有問題嗎?如果您嘗試過這樣並且無法正常工作,請發佈您嘗試的內容。如果您還沒有嘗試過,請先嚐試。 – ajb

+1

由於缺乏嘗試/以前的研究而陷入低估。這是非常基本的東西,而且這些東西有很多例子。除此之外:閱讀有關原始類型 - 然後停止使用它們。您應該在地圖聲明的左側放置類型信息! – GhostCat

+0

有什麼問題?獲取關鍵值的值如果不相等則比較值然後打印鍵。 – Lokesh

回答

-1

根據不同的按鍵會相同,顯示不同的值的關鍵,你可以嘗試這樣的

public class test { 
    public static void main(String args[]){ 
     HashMap<String, String> map1 = new HashMap<>(); 
     HashMap<String,String> map2 = new HashMap<>(); 
     map1.put("Name", "Jerry"); 
     map1.put("State", "Texas"); 
     map2.put("Name","TOM"); 
     map2.put("State", "Texas"); 
     Iterator<?> it = map1.entrySet().iterator(); 
     Iterator<?> it1 = map2.entrySet().iterator(); 
     while (it.hasNext() && it1.hasNext()) { 
      Map.Entry pair = (Map.Entry)it.next(); 
      Map.Entry pair1 = (Map.Entry)it1.next(); 
      if(!pair.getValue().equals(pair1.getValue())) { 
       System.out.println(pair.getKey()+" "+pair.getValue()+" "+pair1.getValue()+" mismatched"); 
      } 
     } 
    } 
} 

輸出一些東西

Name Jerry TOM mismatched 
+0

已接受downvotes,但有正當理由 – Lokesh

+0

@PrishiKumar是根據相同的標準比較?順便說一句,這段代碼工作的非常好,我已經在我的電腦上測試過它 – Lokesh

+0

它顯示出幾個字段不匹配,即使它匹配。 。 –

0

你可以試試這個:

public static void main(String[] args) { 
    Map<String,String> mapA = new HashMap<>(); 
    mapA.put("Name", "Jerry"); 
    mapA.put("State", "Texas"); 
    Map<String,String> mapB = new HashMap<>(); 
    mapB.put("Name","TOM"); 
    mapB.put("State", "Texas"); 
    Set<String> bKeys = mapB.keySet(); 
    mapA.keySet().stream() 
      .filter(bKeys::contains) 
      .distinct() 
      .map(key -> { 
       String valA = mapA.get(key); 
       String valB = mapB.get(key); 
       if (Objects.equals(valA, valB)) { 
        return null; 
       } 
       return key + " " + valA + " vs " + valB + " mismatched"; 
      }) 
      .filter(Objects::nonNull) 
      .forEach(System.out::println); 
} 
+0

@PrishiKumar閱讀關於流https://www.tutorialspoint.com/java8/java8_streams.htm –

+0

謝謝葉戈爾,但是這隻檢查第一對 –

+0

不,它是爲mapA和MapB的所有鍵itarate,並獲得不同的鍵值。之後,我們檢查map中的值是否等於並用diff來創建字符串 –

相關問題