深入理解 Java ArrayList 集合:原理、用法与性能分析
引言
在 Java 开发中,处理一组数据是常态。虽然数组是最基础的数据结构,但其长度固定带来的局限性往往让人头疼。为了更灵活地管理数据,Java 提供了集合框架,它能根据元素的增减自动调整大小,并封装了大量常用操作。
为什么需要集合
数组的局限
当我们想存多个元素时,第一反应往往是数组:
int[] arr = new int[3];
数组访问快,索引定位直接。但一旦创建,长度就锁死了。如果后续数据多了,得新建数组、复制数据,既麻烦又耗性能。
集合的优势
集合解决了这个痛点。以 ArrayList 为例,它的长度可变,添加元素时会自动扩容,不用操心边界问题。
数据类型存储差异
数组比较'宽容',基本类型和引用类型都能存。集合则要求严格,只能存引用类型。如果要存数字,得用包装类 Integer。这是因为泛型机制的限制。
import java.util.ArrayList;
ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 自动装箱
| 对比项 | 数组 | 集合 |
|---|---|---|
| 长度 | 固定 | 可变 |
| 类型 | 基本 + 引用 | 仅引用(需包装类) |
| 操作 | 基础索引访问 | 丰富 API(增删改查) |
ArrayList 核心机制
概述与创建
ArrayList 实现了 List 接口,底层靠数组支撑。它允许重复元素,且能动态伸缩。
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list); // 打印结果为 []
}
}
JDK 7 之后,右侧尖括号里的类型可以省略,编译器会自动推断。


