详解Java ArrayList
ArrayList简介ArrayList是List接口的实现类,底层基于数组实现,容量可根据需要动态增加,相当于动态数组。ArrayList继承于AbstractList,并且还实现了Cloneable、Serializable、RandomAccess接口。
https://img2023.cnblogs.com/blog/1669883/202310/1669883-20231031151330115-35422590.png
[*]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;
}构造方法
//无参构造器,最开始创建的是空数组,当添加第一个元素时初始化容量为10。public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}//指定初始化容量,为0的话则创建空数组。public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); }}//传入一个集合,将该集合中的元素存到ArrayList中。public ArrayList(Collection
页:
[1]