最近在研究hashmap的源码,jdk版本1.8
hashmap的第一层是一个数组Node[] table
table数组中存放的是一个结构体为node的单向链表
下面是和我的问题相关的几个属性:
size hashmap中node的个数
capacity hashmap中table数组的长度
loadfactor 负载系数,默认0.75
threshold hashmap中的阈值(threshold是等于capacity乘以loadfactor)
当++size>threshold时hashmap会扩容,并且进行rehash操作
比如就拿初始值来说,capacity=16,threshold=12,当put第13个键值对时就会触发rehash,扩容之后,capaccity会翻倍变成32,同样threshold也会重新计算变成24
那问题来了,在hashmap中,size的大小不能大于阈值,更能大于capacity?
这岂不是意味着,node元素的个数还不如数组的长度大?
还是我理解有误,请高手指教