我在代码中使用HashMultiMap。我的HashMultiMap结构就像,
Key1 - >值11 - >值12 - >价值13 ....
Key2 - > Value21 - >价值22 ....
现在,我希望如果key1具有相同的值(例如:value11 = value12),则保留(或不存储)该值的一个副本(例如:仅保留value11或不存储value12)。任何人都可以帮助我以有效(更快)的方式实现这一目标。
答案 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