关于ArrayList源码add部分解读

本文详细解析了ArrayList在Java中的初始化过程及扩容机制。当ArrayList在构造方法中未指定容量时,默认容量为0,并且在首次添加元素时会自动扩容到10个元素的位置。之后每次需要更多空间时,都会按当前容量的1.5倍进行扩容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List list = new ArrayList();

在这段源码中,构造方法初始化了一个空数组。


DEFAULTCAPACITY_EMPTY_ELEMENTDATA就是一个空数组。

在这个时候,list就只是一个空数组,size=0,length=0;

list.add("java");

在执行add操作的时候,size = 0,length=0


当size+1 - length >0时,也就是此时我需要的容量大于数组的长度时就需要扩容了




到现在为止,一个长度为10的数据就诞生了。

elementData[size++] = “java”;
return true;

然后数组添加,size++,执行完成,返回true。

方法执行完成,此时状态,size=1,length=10;

当size+1>leng的时候就需要再次进行扩容,以length的1.5倍扩容


然后添加完成,return true。

总结:如果我们初始化一个ArrayList,在构造方法中没有指定容量,那么这个ArrayList的容量就应该是0,而不是10。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值