ArrayList是 Java 集合框架(Java Collections Framework)中最常用的动态数组实现,它提供了灵活的容量管理、便捷的增删改查操作,广泛应用于日常开发中。本文将深入剖析 ArrayList 的底层结构、核心方法源码、性能特点及最佳实践,帮助读者彻底掌握这一基础数据结构。
一、ArrayList 的概念
ArrayList 基于动态数组实现,底层维护一个 Object[] 数组,elementData 存储元素,同时通过 size 变量记录当前有效元素个数,容量可自动扩容。它实现了 List 接口,如下图:

ArrayList 是以泛型方式实现,使用时必须实例化;ArrayList 实现 RandomAccess 接口,ArrayList 可随机访问;ArrayList 实现 Cloneable 接口,ArrayList 可以克隆;ArrayList 实现 Serializable 接口,支持序列化;ArrayList 不是线程安全,在单线程下可以使用,在多线程中可以选择 Vector 或者 CopyOnWriteArrayList;ArrayList 底层是一段连续的空间,可以自动扩容,是一个动态类型的顺序表。
二、ArrayList 的使用
1. 构造 ArrayList
ArrayList 提供三种构造函数:
| 方法 | 说明 |
|---|---|
ArrayList() | 无参构造 |
ArrayList(Collection<? extends E> c) | 利用其他 Collection 构建 ArrayList |
ArrayList(int initialCapacity) |










