HashMap中的哈希冲突

时间:2016-01-29 11:04:41

标签: java collections

我知道有两种方法可以在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处理了)。

1 个答案:

答案 0 :(得分:1)

我认为#2是#1的一个特例,它真的是一样的,就像当HashMap决定放置新元素的位置时,它决定不是因为其他所有东西都是满的,但是因为hashCode是与已经在地图中的元素相同。

我同意,您应该关注IEnumerable,请参阅:Creating a hashCode() Method - Java