1.定义
ArrayList是一个动态数组,也是我们常用的集合,它允许任何元素的插入,包括null。
ArrayList初始化容量为10,该容量代表了数组的大小,随着容器中容量的不断增加,容器的大小也会随着增加。在每次向容器中增加元素时,会进行容量检查,当快溢出时,会进行扩容操作。
ArrayList继承自 AbstractList,实现了 List 接口。同时还实现了 RandomAccess、Cloneable、Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。
2.特征
1、ArrayList可以存放重复数据,也可以存放null值
2、ArrayList中元素存放和插入顺序一致,插入的元素是有序的
3、ArrayList集合底层采用的是动态数组来存储数据
4、动态扩容
5、非线程安全,异步
6、 擅长随机访问(get ,set)
3.1属性和默认值
//默认的初始容量10
private static final int DEFAULT_CAPACITY = 10;
//空数组实例
private static final Object[] EMPTY_ELEMENTDATA = {};
//存储数据:使用的是数组,数组存储的数据类型是Object
private transient Object[] elementData;
//用来记录存放数据的个数
private int size;
ArrayList底层存储元素是使用数组
数组 elementData.length:表示当前数组容量,最大存储的数据个数
size:实际存放的数据个数
3.2构造函数
//有参构造函数:通过指定初始容量initialCapacity来实例化ArrayList
public ArrayList(int initialCapacity) {
super();
//参数合法性校验
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+initial