2012-03-24 46 views
2

我在我的代碼中使用HashMultiMap。我HashMultiMap結構是什麼樣子,Java HashMultiMap存儲問題

鍵1 - > Value11 - > Value12 - > Value13 ....

鍵2 - > Value21 - > Value22 ....

現在,我如果key1的值相同(例如:value11 = value12),則保留(或不保存)該值的一個副本(例如:僅保留value11或不保存value12)。任何人都可以幫助我以高效(快速)的方式實現這一目標。

+1

你的代碼中'values'是什麼類型?你是否正確實現了equals()? – 2012-03-24 12:05:48

回答

6

按照HashMultiMap Javadoc中,你選擇了正確的多重映射爲宗旨:

multimap中不存儲重複的鍵值對。添加等於現有鍵值對的新鍵 - 值對沒有任何作用。

現在,您只需確保equals()(和hashCode())在您的值上正確實施。我不認爲你應該擔心更快的方式來做到這一點。 HashMultiMap應該相當有效地實施。

2

如果你想這種行爲爲什麼不使用如下的結構:

Map<Key,Set<Values>> myMap = new HashMap<Key,Set<Values>>(); 

編輯:

如果你想使用HashMultiMap我會建議的一個波紋管

實施MultiMap接口使用映射的HashMap和自動創建的集合使用HashSets。

http://people.csail.mit.edu/milch/blog/apidocs/common/HashMultiMap.html

+1

他爲什麼不能使用MultiHashMap?它是否確保密鑰的所有值都是唯一的? – 2012-03-24 12:06:05