在 Java 中,ArrayListjava.util 包中的一个类,用于存储动态数组。它提供了比普通数组更灵活的功能,可以自动调整大小。


✅1. 创建 ArrayList

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.ArrayList;
import java.util.List;

public class Main {
public static void main(String[] args) {
// 创建一个存储字符串的 ArrayList
ArrayList<String> list1 = new ArrayList<>();

// 使用 List 接口引用
List<Integer> list2 = new ArrayList<>();
}
}
  • ArrayList 是实现类,List 是接口。
  • 泛型 <E> 指定存储的数据类型。
  • 如果没有指定类型:ArrayList list = new ArrayList();(不推荐)

✅2. 常用方法

方法 描述
add(E e) 添加元素
add(int index, E e) 在指定位置插入元素
remove(int index) 删除指定位置的元素
remove(Object o) 删除指定元素
get(int index) 获取指定位置的元素
set(int index, E e) 修改指定位置的元素
size() 获取元素数量
isEmpty() 判断是否为空
contains(Object o) 判断是否包含某个元素
clear() 清空所有元素

✅3. 示例:基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.ArrayList;

public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();

// 添加元素
list.add("苹果");
list.add("香蕉");
list.add("橘子");

System.out.println("初始列表: " + list);

// 在指定位置插入元素
list.add(1, "芒果");
System.out.println("插入芒果后: " + list);

// 获取元素
System.out.println("第二个元素: " + list.get(1));

// 修改元素
list.set(2, "西瓜");
System.out.println("修改后: " + list);

// 删除元素
list.remove("香蕉"); // 删除具体元素
System.out.println("删除香蕉后: " + list);

list.remove(1); // 删除索引位置的元素
System.out.println("删除索引1后: " + list);

// 判断是否包含
System.out.println("是否包含苹果: " + list.contains("苹果"));

// 清空列表
list.clear();
System.out.println("清空后: " + list.isEmpty());
}
}

✅4. 遍历 ArrayList

方式一:for-each 循环

1
2
3
4
5
6
7
8
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

for (String lang : list) {
System.out.println(lang);
}

方式二:普通 for 循环

1
2
3
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}

方式三:使用 Lambda 表达式

1
list.forEach(lang -> System.out.println(lang));

✅5. ArrayList 与数组转换

ArrayList 转 数组

1
2
3
4
String[] array = list.toArray(new String[0]);
for (String s : array) {
System.out.println(s);
}

数组 转 ArrayList

1
2
3
4
5
6
import java.util.Arrays;
import java.util.List;

String[] array = {"Java", "Python", "C++"};
List<String> list = new ArrayList<>(Arrays.asList(array));
System.out.println(list);

✅总结

  • ArrayList 适合需要频繁读取数据的场景,增删元素时性能较低。
  • 如果需要频繁增删数据,可以考虑使用 LinkedList
  • ArrayList线程不安全的,如果需要在多线程环境中使用,请考虑使用 Collections.synchronizedList()CopyOnWriteArrayList