我知道在Java的HashMap中有两种方法可以发生哈希冲突,
1.
hashCode()forKey Object产生的hash value与已经生成的hash value相同(即使哈希桶尚未满) 2.散列桶已经满了,所以新的Entry必须使用现有的索引。
如果使用Java的HashMap,situation#2将是非常罕见的,因为允许的条目数量太多,并且自动调整大小(参见My other question )
我的理解正确吗?
但出于理论知识的考虑,程序员或JVM是否做了什么或可以做什么来避免场景# 2?或
允许哈希桶尽可能大,然后继续调整大小是唯一的策略吗?(与HashMap的情况一样)。
我想,作为一个程序员,我应该只专注于编写一个好的hasCode(),而不必担心scenario#2 (因为API已经解决了这个问题)。
发布于 2016-01-29 11:07:25
我认为#2是#1的一个特例,它实际上是一样的,因为当HashMap决定将新元素放在哪里时,它的决定并不是因为其他的元素都满了,而是因为hashCode与已经在映射中的元素相同。
我同意,你应该关注hasCode(),参见:Creating a hashCode() Method - Java
https://stackoverflow.com/questions/35082909
复制相似问题