import java.util.HashMap;
public class HashMapDemo {
//实现了把一个数变为最接近的2的n次方
public static void main(String[] args) {
int cap=5;
int result=tableSizeFor(cap);//8
System.out.println(result);
}
static int tableSizeFor(int cap) {
int n = cap - 1;
// >>>:无符号右移。无论是正数还是负数,高位通通补0。
n |= n >>> 1;// 00000100 | 00000010 = 00000110 6
n |= n >>> 2; // 00000110 | 00000011 = 00000111 7
n |= n >>> 4; // 00000111 | 00000000 = 00000111 7
n |= n >>> 8; // 00000111 | 00000000 = 00000111 7
n |= n >>> 16;// 00000111 | 00000000 = 00000111 7
return n + 1;// 00001000 =8
//原来是00000100,变成了00000111,最后加1,就变成2的整数次方数00001000
}
}
hashmap中tableSizeFor()解释n >>>1操作
最新推荐文章于 2022-07-17 17:56:26 发布