gpt4 book ai didi

java - 具有不同 hashCode 的两个键是否可以成为 Java 中 HashMap 中同一存储桶的一部分?

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:20 26 4
gpt4 key购买 nike

我有一个 HashMap。其中有 16 个桶(默认情况下)。现在是否有可能具有不同 hashCode 的两个键属于同一个桶?或者总是为不同的 hashCode 创建一个新的桶,并且 HashMap 以这种方式扩展桶的大小?

看了很多帖子,自己却一头雾水。

最佳答案

是的,这是可能的。由于桶的数量远小于可能的 hashCodes 数量(桶的数量与 HashMap 中的条目数量成正比,而可能的 hashCodes 是可能的 int 值的数量,它更大),hashCode 到桶的最终映射是由一些模数运算符完成的,因此多个 hashCodes 可能会映射到同一个桶(例如,如果您有 16 个桶,则 hashCodes 1 和 17 都将映射到同一个桶(注意hashCode 不是指 hashCode 方法返回的值,因为 HashMaphashCode< 上应用了一个附加函数 以改进散列码的分布))。

这就是为什么 hashCode 本身不足以确定我们要查找的键是否存在于映射中 - 我们还必须使用 equals

关于java - 具有不同 hashCode 的两个键是否可以成为 Java 中 HashMap 中同一存储桶的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37097428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com