我知道有两种方法可以在Java HashMap
中发生哈希冲突,
1.
hashCode()
Key Object
生成的hash value
与已生成的Entry
相同(即使哈希桶尚未填满)2.Hash Bucket已经满了所以新的
HashMap
必须在现有索引处。
如果是Java HashMap
,那么情境#2 会因为大量允许的条目和自动调整大小而非常罕见(请参阅My other question)
我的理解是否正确?
但是为了理论知识,程序员或JVM是做任何事情还是可以做任何事情来避免场景#2? OR
是否允许 hash-bucket 具有最大可能的大小,然后不断调整唯一的策略? (正如在hasCode()
的情况下所做的那样)。
我想,作为程序员,我应该专注于编写一个好的App_Start > WebApiConfig.cs
而不用担心场景#2(因为这已经由API处理了)。
答案 0 :(得分:1)
我认为#2是#1的一个特例,它真的是一样的,就像当HashMap决定放置新元素的位置时,它决定不是因为其他所有东西都是满的,但是因为hashCode是与已经在地图中的元素相同。
我同意,您应该关注IEnumerable
,请参阅:Creating a hashCode() Method - Java