求大神解读一下这段源码
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)`是什么运算呢?这样能保证下标是唯一的吗?
HGfish
9 years, 6 months ago
Answers
这个方法非常巧妙,它通过 h & (table.length -1) 来得到该对象的保存位,而HashMap底层数组的长度总是 2 的 n 次方,这是HashMap在速度上的优化。在 HashMap 构造器中有如下代码:
Trunks
answered 9 years, 6 months ago