关注
HashMap中通过h&(length-1)的方法来代替取模
static int indexFor(int h, int length) { //根据hash值和数组长度算出索引值
return h & (length-1);
}
l
ength为2的整数次幂的话,h&(length-1)就相当于对length取模,这样便保证了散列的均匀,同时也提升了效率;其次,length为2的整数次幂的话,为偶数,这样length-1为奇数,奇数的最后一位是1,这样便保证了h&(length-1)的最后一位可能为0,也可能为1(这取决于h的值),即与后的结果可能为偶数,也可能为奇数,这样便可以保证散列的均匀性,而如果length为奇数的话,很明显length-1为偶数,它的最后一位是0,这样h&(length-1)的最后一位肯定为0,即只能为偶数,这样任何hash值都只会被散列到数组的偶数下标位置上,这便浪费了近一半的空间,因此,length取2的整数次幂,是为了使不同hash值发生碰撞的概率较小,这样就能使元素在哈希表中均匀地散列
查看原帖
5 7
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
01-16 11:50
浙江工商大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 哪些公司开春招了? #
9032次浏览 115人参与
# 运营人的第一份offer应该如何选 #
213786次浏览 1253人参与
# 上班以后,你还有哪些坚持的爱好? #
6408次浏览 167人参与
# 华为工作体验 #
288621次浏览 1369人参与
# 你都在哪些场所面过试? #
18008次浏览 217人参与
# 聊聊你的职场新体验 #
314192次浏览 1852人参与
# 找工作以来,你最看不惯__ #
12250次浏览 282人参与
# AI coding的好用工具分享 #
16168次浏览 354人参与
# 工作压力大怎么缓解 #
137082次浏览 1228人参与
# 实习怎么做才有更好的产出 #
10814次浏览 202人参与
# 实习教会我的事 #
51345次浏览 399人参与
# 你最近因为什么迷茫? #
32069次浏览 459人参与
# 实习生工资多少才算正常? #
11541次浏览 189人参与
# 小米求职进展汇总 #
1005949次浏览 6509人参与
# 你给AI提过哪些离谱的需求? #
5322次浏览 157人参与
# 你见过最离谱的招聘要求是什么? #
253939次浏览 1727人参与
# 非技术2024笔面经 #
458725次浏览 4930人参与
# 领导做过最不靠谱的事 #
11318次浏览 203人参与
# 你想跟着什么样领导? #
47420次浏览 235人参与
# 职场破防瞬间 #
359178次浏览 2835人参与

