给定一个整数,返回大于等于此整数的最小2的冥次数,如cap=10,则返回16。
int MAX_CAPACITY = 1<<30;
int tableSizeFor(int cap) {
int n = cap -1;//如果不减1,会出现cap等于2的冥次数时返回此冥次数x2,比如cap=8,返回16
n |= n >>>1;
n |= n >>>2;
n |= n >>>4;
n |= n >>>8;
n |= n >>>16;
return (n <0) ?1 : (n >=MAX_ CAPACITY) ?MAX_ CAPACITY : n +1;
}
网友评论