首页 新闻 会员 周边 捐助

hashmap的put方法

0
[待解决问题]

我只put了5个啊!!默认初始容量是16,程序怎么会走到那里去的??

困难户的主页 困难户 | 初学一级 | 园豆:168
提问于:2020-12-11 00:13
< >
分享
所有回答(1)
0

我记得好像是懒加载了吧,默认是null,size=0好像,第一次put数据的时候会执行resize方法,进行容量的初始化

床前那明月光 | 园豆:202 (菜鸟二级) | 2020-12-11 10:51

这不是初始化了,这是大于阈值12开始扩容了

支持(0) 反对(0) 困难户 | 园豆:168 (初学一级) | 2020-12-11 14:34

@困难户: 刚new完hashmap,threshold是0,插入第一个数据的时候判断table是不是null,是null说明是第一次插入,执行resize进行hashmap的初始化,threshold变为12,插入第一个数据执行到你这个if的时候size还是0,而threshold已经变为12,++size为1,是小于12的,所以没有走resize扩容,当你插入第12个数据的时候,++size>12才会执行扩容,扩容时机为第一次插入数据,从0扩充到16,之后的扩容是和threshold还有hash冲突相关了

支持(0) 反对(0) 床前那明月光 | 园豆:202 (菜鸟二级) | 2020-12-11 16:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册