精通 Java ArrayList:操作、方法与最佳实践
Java ArrayList 类
发掘 Java ArrayList 全威力:创建、操作、迭代,配合清晰实战示例。
ArrayList 类属于 Java 集合框架,实现 List 接口,提供可变大小数组数据结构。与静态数组不同,ArrayList 随元素增删自动调整容量,是动态数组。

ArrayList 与数组对比
传统数组声明时需固定大小,限制灵活性。ArrayList 按需调整大小,实现高效动态数据处理。
创建 ArrayList
使用前导入:
import java.util.ArrayList;
按期望元素类型实例化:
// Integer 类型 ArrayList ArrayList<Integer> intList = new ArrayList<>(); // String 类型 ArrayList ArrayList<String> strList = new ArrayList<>();
注意:泛型不支持基本类型,须用包装类(如 Integer 对应 int)。
示例:创建 ArrayList
import java.util.ArrayList; class Main { public static void main(String[] args){ ArrayList<String> languages = new ArrayList<>(); languages.add("Java"); languages.add("Python"); languages.add("Swift"); System.out.println("ArrayList: " + languages); } }
输出
ArrayList: [Java, Python, Swift]
ArrayList 基本操作
核心操作包括添加、访问、修改、移除元素。下面是各操作简明代码片段。
- 添加元素
- 访问元素
- 修改元素
- 移除元素
1. 添加元素
追加单个元素:
ArrayList<String> languages = new ArrayList<>(); languages.add("Java"); languages.add("C"); languages.add("Python"); System.out.println("ArrayList: " + languages);
输出
ArrayList: [Java, C, Python]
指定索引插入:
languages.add(1, "JavaScript"); languages.add(3, "C++");
批量添加集合元素:
import java.util.ArrayList; import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<String> vowels = new HashSet<>(); vowels.add("a"); vowels.add("e"); vowels.add("i"); ArrayList<String> alphabets = new ArrayList<>(); alphabets.addAll(vowels); System.out.println("ArrayList: " + alphabets); } }
输出
ArrayList: [a, e, i]
2. 访问元素
按索引获取:
ArrayList<String> animals = new ArrayList<>(); animals.add("Cat"); animals.add("Dog"); animals.add("Cow"); String str = animals.get(1); System.out.print("Element at index 1: " + str);
输出
Element at index 1: Dog
按需可用 Iterator 迭代。
3. 修改元素
替换现有元素:
ArrayList<String> languages = new ArrayList<>(); languages.add("Java"); languages.add("Kotlin"); languages.add("C++"); languages.set(2, "JavaScript"); System.out.println("Modified ArrayList: " + languages);
输出
Modified ArrayList: [Java, Kotlin, JavaScript]
4. 移除元素
按索引移除:
ArrayList<String> animals = new ArrayList<>(); animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); String removed = animals.remove(2); System.out.println("Updated ArrayList: " + animals); System.out.println("Removed Element: " + removed);
输出
Updated ArrayList: [Dog, Cat] Removed Element: Horse
clear() 清空所有元素,removeAll() 移除范围元素。
常用 ArrayList 方法
除基本增删改查外,以下方法高频使用:
| 方法 | 说明 |
|---|---|
| size() | 返回元素数量。 |
| sort() | 排序列表。 |
| clone() | 创建浅拷贝。 |
| contains() | 检查元素是否存在。 |
| ensureCapacity() | 预分配空间。 |
| isEmpty() | 检查列表是否为空。 |
| indexOf() | 查找首次出现索引。 |
完整列表参阅官方 ArrayList API。
增强 for 循环迭代
ArrayList<String> animals = new ArrayList<>(); animals.add("Cow"); animals.add("Cat"); animals.add("Dog"); for (String animal : animals) { System.out.print(animal + ", "); }
输出
Cow, Cat, Dog,
常见问题
Java ArrayList 与 LinkedList 区别?
| ArrayList | LinkedList |
|---|---|
实现 List 接口 | 实现 List、Queue 和 Deque |
| 单一连续内存块 | 节点含 next/prev 引用 |
| 随机访问 O(1) | 顺序访问 O(n) |
| 动态扩容 | 动态扩容 |
如何将 ArrayList 转数组?
String[] arr = new String[languages.size()]; languages.toArray(arr);
如何将数组转 ArrayList?
ArrayList<String> list = new ArrayList<>(Arrays.asList(arr));
如何一行代码创建并初始化 ArrayList?
ArrayList<String> list = new ArrayList<>(Arrays.asList("Java", "Python", "C"));
如何将 ArrayList 转字符串?
String str = languages.toString();
如何用 List 接口创建 ArrayList?
List<String> list = new ArrayList<>();
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 深入理解 Java Vector:用法、特性及与 ArrayList 的对比
- 掌握 Java 集合算法:排序、打乱、搜索与更多实用操作
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除