static int indexFor(int h, int length) {
return h & (length-1);
}
是的,就是效率更高的按位与运算。这里有一个前提,length是一个2的幂次方整数,这样,length-1 的二进制就是一个形如“0000111...”的数,比如,如果length=4,length-1=3,其二进制表示为“0011”,如果length=8,length-1=7,其二进制表示为“0111”,以此类推。将h和length-1进行按位与运算的时候,由于高位都是0,只有低位的1才能决定最终的结果,就相当于对h进行相应数值(即length)的求模运算。