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;
}
HashMap初始化大小一定是2的n次冪,如果入參不是2的n此冪,則返回參數是下一個2的n次冪。
例如:
入參:3 返回:4
入參:5 返回:8
入參:16 返回:16