hashMap计算下标的方法

1.比较容易想到的一种计算下标的方法是取余运算;在hashMap中使用了更加高效的算法;

2.(n-1)&hash,其中n为数组的长度,hash是使用key通过Object中的hashCode()方法计算得到的hash值,与右移了16位的hashCode值异或运算得到的。并且n为之前使用tablesizefor得到的2的次方数;

于是精彩的地方就出现了,由于n为2的n次方的一个数,比如n = 16,于是n-1=15,转变为2进制后为:0000 1111,与上一个数(5),0000 0101,由于高位不做计算,所以只有低位做计算,结果为 0000 1001,这就意味着无论怎么计算,最后的结果一定是小于原先的数16(减小1的好处:保证低位的值全为1便于计算;保证之后的与运算结果小于原先的数),这就是与运算实现哪去制定数组下标的过程的方法;

全部评论

相关推荐

点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务