- 做除余的时候2的倍数可以直接使用
&
进行快速计算
例如:
19%16
可以写成19&(16-1)
,位运算更高效
- 扩容的时候只移动大约一半的数据,并且不会造成扩容之后碰撞更加严重的情况
例如: hash值为4和8的值存放在size为4的数组中,则两个元素都存放在0下标的数据中,当以2倍扩容时,size变为8,8依然存放在0下标位置上,而4移动到下标为4的位置上,这样不仅达到了扩容的效果,还减少了hash碰撞,一举两得。
&
进行快速计算例如:
19%16
可以写成19&(16-1)
,位运算更高效
例如: hash值为4和8的值存放在size为4的数组中,则两个元素都存放在0下标的数据中,当以2倍扩容时,size变为8,8依然存放在0下标位置上,而4移动到下标为4的位置上,这样不仅达到了扩容的效果,还减少了hash碰撞,一举两得。
本文标题:Java - HashMap扩容为什么选用2倍
本文链接:https://www.haomeiwen.com/subject/kizbaktx.html
网友评论