Java 集合扩容概括

参考博文:

java集合的扩容机制_这个名字先用着的博客-CSDN博客

# ArrayList

可随着元素的增长而自动扩容,正常扩容的话,每次扩容到原来的 1.5倍

# ArrayList 和Vector扩容机制总结:

ArrayList 和Vector,底层都是Object数组,

默认加载因子都是:1(元素满了才扩展容量).

默认容量都是:10(但是ArrayList 在jdk1.8时默认为空,当添加元素时,才初始化为10个容量。)

ArrayList:新容量为原容量的 1.5倍,Vector:新容量为原容量的 2倍.

# HashSet和HashMap扩容机制总结:

HashSet和HashMap都是默认初始容量是16(jdk1.7的),但是jdk1.8做了优化,初始容量为0,第一次存元素的时候才扩容为16

加载因子是:0.75

扩容为原来的:2倍

# Hashtable

默认初始容量 11

扩容加载因子 0.75(当超出默认长度(int)(11*0.75)=8时,扩容为 oldx2+1新容量为原容量的2倍+1. 【int newCapacity = (oldCapacity << 1) + 1;】

# StringBuilder和StringBuffer

初始容量都是:16 ,程序猿尽量手动设置初始值。以避免多次扩容所带来的性能问题。

默认数组容量扩充为原数组容量的 2倍+2。

# 没有扩容机制:

LinkedList:没有扩容机制,因为其底层是双向链表结构

LinkedHashSet,TreeSet没有数组的扩容机制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值