ArrayList是Java中动态存储对象的常用集合类,属于java.util包并实现List接口,相比数组更灵活,支持自动扩容及元素的增删改查操作;创建时需导入包并声明实例,推荐使用菱形操作符简化泛型声明;通过add()添加元素,get(index)访问元素,set()修改,remove()删除,索引从0开始,越界会抛异常;遍历可用for-each、普通for循环或Iterator,其中Iterator适合边遍历边删除;建议初始化时指定容量以提升性能,避免存储基本类型而应使用包装类,及时调用clear()释放内存,可借助toArray()转为数组,用isEmpty()判断是否为空;结合泛型可提高类型安全性,合理使用能显著提升开发效率。

在Java中,ArrayList 是最常用的集合类之一,它属于 java.util 包,实现了 List 接口,能够动态地存储和操作对象数据。相比传统数组,ArrayList 更加灵活,支持自动扩容、元素增删改查等操作,非常适合处理不确定数量的数据。
创建和初始化ArrayList
使用 ArrayList 前需要先导入包,并声明实例。可以存储任意引用类型,比如 String、Integer 或自定义对象。
示例:import java.util.ArrayList;ArrayListnames = new ArrayList(); ArrayListscores = new ArrayList();
从 Java 7 开始支持“菱形操作符” ,编译器会自动推断泛型类型,简化代码。
添加和访问元素
通过 add() 方法将元素添加到列表末尾或指定位置,使用 get(index) 获取指定索引的元素。
立即学习“Java免费学习笔记(深入)”;
常用方法:-
names.add("Alice");—— 添加元素 -
names.add(1, "Bob");—— 在索引1处插入 -
String first = names.get(0);—— 获取第一个元素 -
int size = names.size();—— 获取当前元素个数
注意:索引从0开始,访问越界会抛出 IndexOutOfBoundsException。
修改和删除元素
可以替换指定位置的元素,也可以根据值或索引删除元素。
-
names.set(0, "Charlie");—— 修改索引0的值 -
names.remove(1);—— 删除索引1的元素 -
names.remove("Charlie");—— 删除第一个匹配的值(返回boolean)
删除元素后,后续元素会自动前移,列表大小随之变化。
遍历ArrayList
有多种方式遍历 ArrayList,选择合适的方式可提高代码可读性和效率。
-
for-each循环:简洁安全,适合只读操作
for (String name : names) { System.out.println(name); } -
普通for循环:适合需要索引的场景
for (int i = 0; i -
迭代器(Iterator):在遍历中安全删除元素
var it = names.iterator(); while (it.hasNext()) { ... }
ArrayList使用技巧与注意事项
掌握一些实用技巧可以让代码更高效、健壮。
-
指定初始容量:如果预估元素数量,可在构造时设置初始容量,减少扩容开销
new ArrayList(100); - 避免存储基本类型:ArrayList 不支持 int、double 等基本类型,应使用包装类如 Integer、Double
-
及时清理无用对象:调用
clear()可清空列表,帮助GC回收内存 -
转换为数组:使用
toArray()方法导出为数组String[] arr = names.toArray(new String[0]); -
判断是否为空:使用
isEmpty()比size() == 0更语义清晰
基本上就这些。ArrayList 使用简单但功能强大,合理运用能大幅提升开发效率。关键是理解其动态特性,注意索引操作边界,选择合适的遍历方式。实际项目中,配合泛型使用还能避免类型转换错误,让代码更安全。不复杂但容易忽略细节。










