HashMap中定义的成员变量:
其中:
size:记录了Map中KV对的个数
loadFactor:负载因子系数,用来衡量HashMap满的程度,默认为0.75f
capacity:容量,默认容量是16
threshold:临界值,当实现KV个数超过时,HashMap会将其扩容,threshole=容量*加载因子
size和capacity的区别:
HashMap像一个"桶",capacity就是这个桶当前最多可以装多少元素,size表示这个桶已经装了多少元素
HashMap在初始化时默认他的容量是16,用户可以通过重载构造函数来改变他的默认容量,如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择大于该数字的第一个2的幂作为容量.(1->2,7->8,9->16)
HashMap是有扩容机制的,扩容条件就是当HashMap中的元素个数size超过临界值threshold时就会自动扩容
threshole=容量*加载因子
loadFactor装载因子,表示HashMap满的程序,默认0.75f,好处在于0.75即3/4,而capacity是2的幂所以两个数的乘积都是整数
对于HashMap来说,默认情况下,当其size大于12(0.75*16)时就会触发扩容到32(16*2)
来源:微信公众号Hollis,非常感谢!