ArrayList简介
ArrayList是List接口的实现类,底层基于数组实现,容量可根据需要动态增加,相当于动态数组。ArrayList继承于AbstractList,并且还实现了Cloneable、Serializable、RandomAccess接口。

- List:表明是列表数据结构,可以通过下标对元素进行添加删除或查找。
- Serializable:表示可以进行序列化和反序列化操作,可以把对象与字节流相互转换。
- RandomAccess:有这个接口标记的List表示可以支持快速随机访问,即通过元素下标可以直接得到元素内容。
- Cloneable:表示支持拷贝,可以通过浅拷贝或深拷贝来复制对象的副本。
常用方法
- public class ArrayListTest {
- public static void main(String[] args) {
- ArrayList<Integer> arrayList = new ArrayList<>();
- arrayList.add(1); //添加元素
- arrayList.add(2);
- arrayList.add(3);
- arrayList.add(4);
- //在指定下标处插入元素
- arrayList.add(4, 5);
- //获取ArrayList大小
- System.out.println(arrayList.size()); //输出5
- //获取指定下标的元素
- System.out.println(arrayList.get(4)); //输出5
- //移除指定下标的元素
- arrayList.remove(0);
- //判断ArrayList内是否有指定元素
- System.out.println(arrayList.contains(5)); //输出true
- //修改指定下标的元素值
- arrayList.set(0, 9);
- System.out.println(arrayList.get(1)); //输出3
- }
- }
复制代码 ArrayList核心源码分析
类属性
- public class ArrayList<E> extends AbstractList<E>
- implements List<E>, RandomAccess, Cloneable, java.io.Serializable
- {
- //序列号版本号
- @java.io.Serial
- private static final long serialVersionUID = 8683452581122892189L;
- //默认初始容量
- private static final int DEFAULT_CAPACITY = 10;
- //空数组,指定默认初始化容量为0时赋值给elementData,避免了重复创建空数组
- private static final Object[] EMPTY_ELEMENTDATA = {};
- //当调用无参构造方法时,赋值给elementData,主要用于在添加第一个元素前,标记该ArrayList是由无参构造器创建,便于将容量初始化为DEFAULT_CAPACITY,避免了重复创建空数组
- private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
- //实际存放元素的数组
- transient Object[] elementData; // non-private to simplify nested class access
- //ArrayList的元素个数
- private int size;
- }
复制代码 构造方法
[code]//无参构造器,最开始创建的是空数组,当添加第一个元素时初始化容量为10。public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}//指定初始化容量,为0的话则创建空数组。public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); }}//传入一个集合,将该集合中的元素存到ArrayList中。public ArrayList(Collection |