标签:32位 check not div hash表 大于等于 code 现在 没有
当表示阈值时,只等于当前容量的1.5倍加1
// 返回一个大于等于且最接近 c 的2的幂次方整数 private static final int tableSizeFor(int c) { int n = c - 1; 1001 1001 1001 1001 n |= n >>> 1; // 将第一个1后面的值也变为1, 现在(第一个高位不为0的位置开始)从最高位开始,后面的2位都是1 将最高位(包括最高位)后面1位变为1 n |= n >>> 2; // 将前面2位为1的后面2位也变为1, 现在从最高位开始,后面4位都是1 将最高位(包括最高位)后面2位变为1 n |= n >>> 4; // 将前面4位为1的后面4位也变为1, 现在从最高位开始,后面8位都是1 将最高位(包括最高位)后面4位变为1 n |= n >>> 8; // 将前面8位为1的后面8位也变为1, 现在从最高位开始,后面16位都是1 将最高位(包括最高位)后面8位变为1 n |= n >>> 16;// 将前面16位为1的后面16位也变为1, 现在从最高位开始,后面32位都是1 将最高位(包括最高位)后面16位变为1 // 上面的操作就是将最高位后面的所有位变为1 return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; }
标签:32位 check not div hash表 大于等于 code 现在 没有
原文地址:https://www.cnblogs.com/virgosnail/p/9503418.html