ArrayList 底层学习(初始容量为10?每次扩容1.5倍?)

本文深入探讨ArrayList的底层实现,分析其构造方法和add()方法源码,揭示了默认初始容量为10,并在扩容时采用1.5倍策略的原因。通过calculateCapacity()和ensureExplicitCapacity()方法,解释了如何确保数组容量适应元素增长需求,同时讨论了为何选择1.5倍而非1.2或2.0倍作为扩容比例。
摘要由CSDN通过智能技术生成

ArrayList

ArrayList 是 List 接口下的实现类,它的底层是数组,可以自动扩容。

它的底层数组如下:
在这里插入图片描述

构造方法

Arraylist():构造的是一个初始容量为10的空列表

ArrayList(int initialCapacity):构造的是一个指定初始容量的一个空列表
在这里插入图片描述在这里插入图片描述

从源码可以看到,赋予底层 elementData 的是一个空数组,那我们为什么说它的默认容量为10呢?

因为 ArrayList 起初创建的是一个空数组,在第一次调用add()方法时为初始数组扩容,因此初始容量变成了10。

add()方法源码

在这里插入图片描述
add()中调用了 ensureCapacityInternal()方法 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值