大家好,又见面了,我是你们的朋友全栈君。
public static int highestOneBit(int i) {
i |= (i >> 1);
i |= (i >> 2);
i |= (i >> 4);
i |= (i >> 8);
i |= (i >> 16);
return i - (i >>> 1);
}
void transfer(Entry[] newTable, boolean rehash) {
int newCapacity = newTable.length;
for (Entry<K,V> e : table) {
while(null != e) {
Entry<K,V> next = e.next;
if (rehash) {
e.hash = null == e.key ? 0 : hash(e.key);
}
int i = indexFor(e.hash, newCapacity);
e.next = newTable[i];
newTable[i] = e;
e = next;
}
}
}
while(null != e)
这句判断,在第一次执行的时候,B原本->null,于是重新计算到B的时候B->null,判断体就结束执行,于是就扩容成功以上就是我目前的理解,还有一种使用迭代器时的fast-fail,以后有机会更新。 关于ConcurrentHashMap可以看看我的另外一篇,欢迎指正:ConcurrentHashMap浅析
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144696.html原文链接:https://javaforall.cn