HashMap的容量为什么是2的n次幂小记

HashMap的容量为什么是2的n次幂小记

HashMap的容量为什么是2的n次幂,和这个(n - 1) & hash的计算方法有着千丝万缕的关系,符号&是按位与的计算,这是位运算,计算机能直接运算,特别高效,&的计算方法是,只有当对应位置的数据都为1时,运算结果也为1,当HashMap的容量是2的n次幂时,(n-1)的2进制也就是1111111***111这样形式的,这样与添加元素的hash值进行位运算时,能够充分的散列,使得添加的元素均匀分布在HashMap的每个位置上,减少hash碰撞,下面举例进行说明 

HashMap的容量为什么是2的n次幂小记

由图可见,非2的n次幂的 (n - 1) & hash 算法,hash碰撞j几率变大