2012-03-24 50 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