加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么HashMap在索引(n-1)和hash上插入新的Node?

发布时间:2020-12-14 23:43:39 所属栏目:Java 来源:网络整理
导读:为什么HashMap在索引上插入新的Node: 标签[(n – 1)哈希] 其中hash = key.hashCode()^ key.hashCode() 16 并且n =节点 K,V的阵列的tab.length. 为什么HashMap没有像这样放置Node:tab [hash]?它只是另一个散列函数,比如在大多数hashCode()方法中乘以31吗?
为什么HashMap在索引上插入新的Node:
标签[(n – 1)&哈希]

其中hash = key.hashCode()^ key.hashCode()>>> 16
并且n =节点< K,V>的阵列的tab.length.

为什么HashMap没有像这样放置Node:tab [hash]?它只是另一个散列函数,比如在大多数hashCode()方法中乘以31吗?
在此先感谢您的解释!

解决方法

因为哈希可能超出范围.

“规范解决方案”是使用数组长度获取散列的(正)模数,此代码使用数组具有2的幂长度来替换昂贵的模数的事实(模数为a使用廉价的按位AND,可以很好地优化常量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读