求大神解读一下这段源码

java  static int indexFor(int h, int length) {
        // assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";
        return h & (length-1);
    }
这是hashmap源码的一个函数,作用是将hashcode对应到hashmap数组里面的下标。`h & (length-1)`是什么运算呢?这样能保证下标是唯一的吗?
阅读 2.7k
2 个回答

h & (length - 1) 等价于 h % length

& 是按位与,需要注意的是这里面 length 的值一定是 2 的幂

举例,length = 4 那么,(length - 1) 的二进制表示是 00000011,00000011 和任意数字进行 & 操作,等价于以 00000100 为除数的取余操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题