HashMap 定位桶方法
h & (length-1)
为什么这个方法能达到取余的效果?
首先,hashmap中桶的个数length是2的整数幂,这样length-1就是一个低位全是1的数。
例如length=16,length-1=15,相当于1111
h & (length-1)后,h的高位全部清为0,只保留低位数
高位都是length的整数倍,取余时不需要关心。这样只保留了对于取余起作用的低位,低位就是余数
h & (length-1)
为什么这个方法能达到取余的效果?
首先,hashmap中桶的个数length是2的整数幂,这样length-1就是一个低位全是1的数。
例如length=16,length-1=15,相当于1111
h & (length-1)后,h的高位全部清为0,只保留低位数
高位都是length的整数倍,取余时不需要关心。这样只保留了对于取余起作用的低位,低位就是余数