StringBuffer、ArrayList和HashMap扩容机制

1、StringBuider和StringBuffer的默认长度为16,在添加元素时如果大于16,则将数组长度扩容为原来的2n+2倍

扩容的原理是左移一位(乘2)+2,+2就避免0左移1位还是0这样的问题

底层:char[]数组

2、ArrayList的初始数组默认长度为10,add()后超出默认长度,则会进行扩容,扩容为原数组的1.5倍(需要注意的是,无参情况下的构造,并不是上来就初始化10长度的数组容量,而是空数组,当添加元素到list中,再去初始化长度为10的数组)

底层:数组

3、LinkedList的扩容机制
由于它的底层是⽤双向链表实现的,没有初始化⼤⼩,也没有扩容的机制

底层:链表

4、、HashMap的初始数组默认长度为16,加载因子0.75所以当长度超过16*0.75=12时扩容为原数组的2倍。

5、、HashTable的初始容量为11,扩容大小:HashTable是按照2*oldlength+1 进行扩容;

底层:数组+链表(1.8之前)数组+链表+红黑树(jdk1.8之后)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值