转自:HashMap源码分析
需要提到的是,HashMap内部的容量设计为2的幂,是为了方便扩容和取余运算,都只需要采用二进制位运算即可
1.扩容:newCapacity <<= 1;
2.取余:当Length=2^n时,hash%Length=hash&(Length-1)
学过数论的应该知道,取余运算相对耗时,而把除数设计为2的幂可以简化为按位与运算从而提高程序计算速度。
需要提到的是,HashMap内部的容量设计为2的幂,是为了方便扩容和取余运算,都只需要采用二进制位运算即可
1.扩容:newCapacity <<= 1;
2.取余:当Length=2^n时,hash%Length=hash&(Length-1)
学过数论的应该知道,取余运算相对耗时,而把除数设计为2的幂可以简化为按位与运算从而提高程序计算速度。