繁体   English   中英

MultiMap 与 MultiValue Map

[英]MultiMap vs MultiValue Map

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

您可以尝试一下,但我怀疑有很大的不同,因为它的作用大致相同。

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

如果您想使用更方便的 Multimap 实现,我建议您使用 google collections。 如果您不想引入新的依赖项, HashMap<Key, Collection<Value>>应该可以做到这一点,这与 apache.collections HashMultiMap 所做的差不多。

Hash 提供的 O(1) 速度很快,并且与元素的大小无关。

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

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

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

由于您将拥有一些具有相同键的值,因此请使用 Google 集合中的http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/HashMultiset.html (现番石榴库, http://code.google.com/p/guava-libraries/ )为您的任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM