MultiMap与MultiValue Map

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

你可以试试但我怀疑它有很大的不同,因为它做了很多相同的事情。

恕我直言的优点是更简单/更清晰的代码,通常比性能更重要。

如果您想使用更方便的Multimap实现,我建议您使用google集合。 如果你不想引入一个新的依赖项, HashMap>应该做的就是apache.collections HashMultiMap的function。

如果是Map Key-> Values,请使用Map实现。

由于您将拥有一些具有相同密钥的值,请使用Google Collection中的http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/HashMultiset.html (现在guava库, http://code.google.com/p/guava-libraries/ )为您的任务。

Hash提供O(1),它很快并且对元素的大小没有任何作用。

关于Multimap,您可以将值放在依赖集合(List,Set)中。 不同的集合实现提供不同的性能

编辑:正如我评论塞巴斯蒂安的回答。 您可以使用提供不同值集合实现的Guava: HashMultiMap (HashMap>)ArrayListMultiMap (HashMap>)