被面试官狂问HashMap:万般无奈只好肝了这套HashMap底层原理源码教程,
2023-08-22 21:31 作者:bilibili00007 | 我要投稿



table赋值给tab,是因为tab是局部变量,而且被多次使用,相比堆中的table效率更高


取余和&运算的区别?

高位都是0,&结果都是0,低位都是1,&之后就是低位的值。
保证了hash扰动之后的结果肯定在16以内,而且是均匀分布的。
这也是为什么容量必须是2的幂次方的原因。否则就无法正常的扰动。

指定容量非2的幂次方,hashmap也是构造一个2的幂次方的数组。

如果不做右移,高位就不会参与到后续的运算。