2014-02-17 53 views
0

我想結合兩個不同的hashmaps。但在這兩張地圖中,有一些重複的條目,所以我必須在合併後刪除這些重複的條目。java如何結合兩個hashmap沒有重複的條目

例如:

HashMap中1:
100你好
101很好

HashMap中2:

100你好
102良好

後結合的散列映射應該長相如:

100你好
101不錯
102好

我已經試過putall,但看來它不會刪除重複的條目。 有人可以幫我快速做到這一點嗎?

+3

請問您可以使用您的代碼來發布您的代碼嗎? –

+2

只是爲了表明'putAll'不是問題:http://ideone.com/CWMRDp –

+0

HashMap不允許重複,但它使用equals方法來確定這一點。只能得出結論,你的鍵不是整數,但你沒有實現的一些其他對象是正確的。你必須告訴我們一個明確的答案。 – Radiodef

回答

1

我在您的方法中看不到問題。

HashMap<String, Object> first = new HashMap<String, Object>(); 
HashMap<String, Object> second = new HashMap<String, Object>(); 

first.put("100", "hello"); 
first.put("101", "nice"); 
second.put("100", "hello"); 
second.put("102", "good"); 

first.putAll(second); 
System.out.println(first); 

輸出

{102=good, 101=nice, 100=hello} 

嘗試檢查,如果你的HashMaps這樣的處理是正確的。

+0

正確,它看起來OP是用於鍵的類不遵守這個。他們需要發佈他們的代碼。另請參見['是'適用於我'的答案有效嗎?'](http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid) – Radiodef

+0

是的,但它允許OP重新檢查他的方法。請注意,我沒有轉貼任何人的代碼。 – Warlord

1

HashMap的密鑰不能重複,因爲它們表示在Set中,所以合併這兩個圖應該可以完成這項工作。

0

您可以將兩個hashmap map1和map2添加到第三個hashmap map3,只需將value的輸入類型聲明爲Object,因爲所有數據類型都將其超類作爲Object類聲明。

HashMap<String, Integer> map1 = new HashMap<String, Integer>(); 
HashMap<String, String> map2 = new HashMap<String, String>(); 

HashMap<String, Object> map3; 
map3 = new HashMap<>(); 

map3.putAll(map1); 
map3.putAll(map2); 
相關問題