//返回比c大最靠近c的2的幂次方整数。例:10->16
private static final int tableSizeFor(int c) {
int n = c - 1;
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;
}
|=运算符:两个二进制对位都为0才为0,其他都为1
这个方法就是把输入的整数对应的二进制转换成所有位都为1。最后在return的时候n+1一定是2的幂次方。