开发者社区 问答 正文

HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?

HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?

展开
收起
叫我饭啊啊 2021-10-25 17:07:09 2796 分享 版权
1 条回答
写回答
取消 提交回答
  • hashCode()方法返回的是int整数类型,其范围为-(2 ^ 31)~(2 ^ 31 - 1),约有40亿个映射空间,而HashMap的容量范围是在16(初始化默认值)~2 ^ 30,HashMap通常情况下是取不到最大值的,并且设备上也难以提供这么多的存储空间,从而导致通过hashCode()计算出的哈希值可能不在数组大小范围内,进而无法匹配存储位置

    2021-10-25 17:07:28
    赞同 展开评论
问答标签:
问答地址: