Java 多值映射与多值映射
在一个地方,我必须使用一个映射到单个键的多个值的映射,因此我想知道使用键的HashMap、list和键的MultiMap之间是否有显著的性能区别,java中的值。您可以尝试它,但我怀疑它有多大区别,因为它做的事情基本相同 优点是代码更简单/更清晰,这通常比性能更重要。哈希提供了O(1),它速度快,并且与元素大小无关 关于多重映射,您可以将值放入依赖集合(列表、集合)。不同的集合实现提供不同的性能Java 多值映射与多值映射,java,performance,map,Java,Performance,Map,在一个地方,我必须使用一个映射到单个键的多个值的映射,因此我想知道使用键的HashMap、list和键的MultiMap之间是否有显著的性能区别,java中的值。您可以尝试它,但我怀疑它有多大区别,因为它做的事情基本相同 优点是代码更简单/更清晰,这通常比性能更重要。哈希提供了O(1),它速度快,并且与元素大小无关 关于多重映射,您可以将值放入依赖集合(列表、集合)。不同的集合实现提供不同的性能 编辑:正如我对塞巴斯蒂安回答的评论。您可以使用Guava,它提供了不同的值集合实现:HashMult
编辑:正如我对塞巴斯蒂安回答的评论。您可以使用Guava,它提供了不同的值集合实现:
HashMultiMap(HashMap)
,ArrayListMultiMap(HashMap)
。如果您想使用更方便的多重映射实现,我建议您使用google collections。如果您不想引入新的依赖项,HashMap
应该采用与apache.collections HashMultiMap类似的方法。如果它是一个映射键->值,请使用映射实现
由于您将有一些具有相同键的值,请使用Google集合(现在的guava library)中的来完成任务。Hashmap/HashTable/Hash*不提供O(1),在最坏的情况下,与所有输入键发生冲突的地方是O(N)。@Pih:hmm…大O并不表示最坏的情况。好的,我考虑了O()表示法作为大O表示法,通常用于最坏的情况。无论如何,哈希表提供了摊销O(1)访问。是的。谷歌收藏被命名为“番石榴”。有一些不同的值集合:HashMultiMap、ArrayListMultiMap。。。