static final int tableSizeFor(int cap) {
int n = cap - 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;
}
這個函數的功能是:輸入一個數,求出與之最近的2次冪的整數,比如輸入5,會輸出8
cap=0101
n=0100
無符號右移1位0010 經過異或運算後---》0110
無符號右移2位0001 經過異或運算後--》0111
無符號右移4位 0000 經過異或運算後-》》0111
。。。。
最後經過右移和異或運算後得出來是0111
最後+1 得1000=8