vij*_*ani 5 java hashmap bucket
我有一个HashMap.它有16个桶(默认情况下).现在有两个具有不同hashCodes的密钥可能是同一个桶的一部分吗?或者它总是为不同的hashCode创建一个新的桶,这样HashMap扩展了桶的大小?
阅读很多帖子,但只是困惑自己.
对的,这是可能的.由于桶的数量远小于可能hashCodes的数量(桶的数量与条目的数量成正比,HashMap而可能hashCodes的数量是可能int值的数量,这要大得多),最终的映射是hashCode一个桶由一个模数运算符完成,因此多个hashCodes可以映射到同一个桶(例如,如果你有16个桶,hashCodes1和17都将映射到同一个桶(请注意,hashCode我不是表示hashCode方法返回的值,因为HashMap在其上应用附加函数hashCode以改进哈希码的分布)).
这就是为什么hashCode单独还不足以确定我们正在寻找的关键字是否存在于地图中 - 我们也必须使用equals它.