在 Java 中,ArrayList
是 java.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<String> list1 = new ArrayList<>();
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
。