2012-02-01 63 views
2

我有兩個HashMap,第一個有3149條記錄,第二個5440條記錄,當我合併它們時,結果尺寸小於3149 + 5440。爲什麼以及如何解決它?爲什麼結合兩個hashMap的結果不是corecct?

Map<String,String> bigMap = new HashMap<String, String>(); 
bigMap.putAll(hashMap1); 
bigMap.putAll(hashMap2); 

int j = 0; 
for (Map.Entry<String, String> entry : bigMap.entrySet()) { 
    System.out.println(j++); 
} 

我也cheched與此代碼,以確保如果有一些共同的關鍵。

for (Map.Entry<String, String> entry : readCsv(hashMap1).entrySet()) { 
    String key = entry.getKey(); 
    String value = entry.getValue(); 
    if(entry.getKey().equals(hashMap2).get(key))){ 
     System.out.println(i++); 
    } 
} 
+0

沒有你的代碼的其餘部分就很難說了。你對這兩張地圖的記錄數是否積極? – mcfinnigan 2012-02-01 10:12:04

+2

小於3149 + 5440,或小於3149?如果'hashMap1'和'hashMap2'共享密鑰,則只有這些密鑰的'hashMap2'值會出現在'bigMap'中。 – Vlad 2012-02-01 10:12:39

+0

也許是因爲hashMap1和hashMap2有一些共同的密鑰? – Pengtuzi 2012-02-01 10:12:49

回答

4

hashMap1hashMap可能有一些相同的密鑰。這就是爲什麼有些條目被具有相似鍵的其他條目覆蓋的原因。

3

如果你在地圖上有相同的密鑰,那麼這是可以預料的。密鑰在地圖中必須是唯一的。如果使用已存在的鍵將值放入映射中,則現有值將被覆蓋。

1

要找到共同的鍵,你可以做

Set<String> common = new HsahSet<String>(hashMap1.keySet()); 
common.retainAll(hashMap2.keySet()); 
System.out.println("Common Keys " + common); 
相關問題