Java HashMultiMap存储问题

时间:2012-03-24 11:59:50

标签: java java-ee guava

我在代码中使用HashMultiMap。我的HashMultiMap结构就像,

  

Key1 - >值11 - >值12 - >价值13 ....

     

Key2 - > Value21 - >价值22 ....

现在,我希望如果key1具有相同的值(例如:value11 = value12),则保留(或不存储)该值的一个副本(例如:仅保留value11或不存储value12)。任何人都可以帮助我以有效(更快)的方式实现这一目标。

2 个答案:

答案 0 :(得分:6)

根据HashMultiMap Javadoc,您为此选择了正确的MultiMap:

  

多图不存储重复的键值对。添加等于现有键值对的新键值对无效。

现在,您只需确保在您的值上正确实施equals()(和hashCode())。我认为你不应该担心更快的方法。 HashMultiMap应该非常有效地实施。

答案 1 :(得分:2)

如果您想要这种行为,为什么不使用如下结构:

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

编辑:

如果你想使用HashMultiMap,我会推荐下面的那个

  

实现使用HashMap的MultiMap接口   map和HashSet用于自动创建的集合。

     

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