在一个地方我必须使用映射到单个键的映射,因此我想知道使用键的HashMap,列表和之间是否存在显着的性能差异密钥的MultiMap,值在java。
中答案 0 :(得分:6)
你可以尝试但我怀疑它有很大的不同,因为它做了很多相同的事情。
恕我直言优势是更简单/更清晰的代码,通常比性能更重要。
答案 1 :(得分:1)
如果您想使用更方便的Multimap实现,我建议您使用google集合。如果您不想引入新的依赖项,HashMap<Key, Collection<Value>>
应该执行几乎与apache.collections HashMultiMap相同的技巧。
答案 2 :(得分:0)
Hash提供的O(1)速度很快,对元素的大小没有任何作用。
关于Multimap,您可以将值放在依赖集合(List,Set)中。不同的集合实现提供了不同的性能。
编辑:正如我评论塞巴斯蒂安的回答。您可以使用提供不同值集合实现的Guava:HashMultiMap (HashMap<KEY, HashSet<VALUE>>)
,ArrayListMultiMap (HashMap<KEY, ArrayList<VALUE>>)
...
答案 3 :(得分:0)
如果是地图密钥 - >值,使用Map实现。
由于您将拥有一些具有相同键的值,因此请使用Google Collection中的http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/HashMultiset.html(现为番石榴库,http://code.google.com/p/guava-libraries/)来完成任务。