天天看点

Java-ArrayList

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处

ArrayList封装了一系列操作,如增删改查,对比使用传统的数组方便了很多,因为java代码已经替我们写好了,我们直接用即可。

一、构造方法:

(1)无参构造器:返回一个初始容量为0的空列表,扩容是在第一次add的时候进行的

(2)传入一个 ​<code>​int类型​</code>​ 的有参构造器:返回一个以你传入的参数作为初始容量的空列表

(3)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。

二、常用方法:

以实现List接口为例:

Java-ArrayList

(1)ArrayList中维护了一个Object类型的数组 elementData

(2)当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次add,则扩容为10,如果后续再次需要扩容,则扩容为原容量的1.5倍(看源码,有移位操作)

(3)如果使用的是指定大小的构造器,则初始容量为指定的大小,如果后续需要扩容,则扩容为1.5倍。

ArrayList类的相关方法和属性:

无参构造器第一次 add:

无参构造器第十一次add:

有参构造器:

注意使用有参构造器传入参数0和使用无参构造器的区别:

扩容方法:(​​Arrays.copyOf()方法详解-jdk1.8​​)