(1)演示

(2)调整算法
static final int tableSizeFor(int cap) {
int n = cap - 1;
//>>>表示无符号右移,若正数,则高位补0,若负数补0 例1010(10)>>>1 为0101
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;
}
分析过程
举例说明
1010(10)>>>1结果0101;
1010 |
0101 =1111通过后面的一系列按位或运算1111+1 = 10000(16)
一系列的操作主要是将容量扩展到2的n幂, 3->4 5->8 9->16 17->32,保证后续计算索引(key.hashcode() & (length-1))一切都是为了效率!设计巧妙。
博客主要演示了Java中调整算法的过程,通过按位或等一系列操作,将容量扩展到2的n幂,如3扩展为4、5扩展为8等,目的是保证后续计算索引的效率,设计十分巧妙。
1359

被折叠的 条评论
为什么被折叠?



