/**
* Returns a power of two size for the given target capacity.
* 根据入参的值(cap),返回一个2幂次方的值
*/
static final int tableSizeFor(int cap) {
//入参值减一,如:cap =10 则 n = 9
int n = cap - 1;
// n >>> 1 ==>> (n >>> 1) = 4,n的二进制为 1001(十进制9) ,向右移动一位 结果为 100 (十进制4),>>> 1 相当于除以(2的一次方)取整 >>> 2 相当于除以(2的二次方)取整
// n |= n >>> 1 ==>> n= 9|4,|或运算符,9的二进制为1001,4的二进制为0100,1001与0100的或计算结果为1101(二进制为13)故n最终结果为13
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}
HashMap之tableSizeFor/** * Returns a power of two size for the given target capacity. * 根据入参的值(cap),返回一个2幂次方的值 */static final int tableSizeFor(int cap) { //入参值减一,如:cap =10 则 n = 9 int n = cap - 1; // n >>> 1 ==>> (n >>