HashSet(HashMap)的扩容机制及红黑树简略梳理

1.在newHashMap对象时,如果没有指定初始容量和负载系数,则默认初始容量为16,负载系数为0.75

2.在table表的数据量已经等于负载值(当前容量*负载系数),则会将table表扩容至当前容量的2倍,负载系数负载值也变为原负载值的两倍,如:初始容量为16,负载系数为0.75,那么负载值就是16*0.75 =  12,当添加完第12个元素后,就会立马进行扩容,容量扩容为32,负载值也变成24,以此类推;

3.链表树化的条件

1) 有一个链表达到8个元素,并且table表容量大于等与64,即会将这个达到8个元素的链表转成红黑树

2)如果有一个链表已经达到8个元素,但是table表容量并没有到达64,就会立马对table表按照上面的规则进行扩容,当下一次添加数据时;

3)instance:

如果某条链表到达了8个元素,而这个table表的容量才16,就会将这个table表的容量扩容至32,

下次添加数据,如果又添加到了这条链表,就会将table表扩容至64,再次添加数据,如果又添加到了这条链表后面,或者其他链表使某条链表达到8个元素,就会将这条链表转成红黑树

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值