MultiMap与MultiValue Map

时间:2011-04-29 09:53:34

标签: java performance map

在一个地方我必须使用映射到单个键的映射,因此我想知道使用键的HashMap,列表之间是否存在显着的性能差异密钥的MultiMap,值在java。

4 个答案:

答案 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/)来完成任务。