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便于计算;保证之后的与运算结果小于原先的数),这就是与运算实现哪去制定数组下标的过程的方法;

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务