什么是 List?
List 是一个有序的集合,可以把它想象成一个动态数组。
本文介绍了 Java List 接口的核心功能与 ArrayList 实现类的使用。内容涵盖元素的增删改查、多种遍历方式(for、forEach、Iterator)、排序方法(Collections.sort、Comparator)、以及 List 与数组的转换。此外还包含集合比较、复制、替换和 Stream 过滤等实用技巧。文章通过代码示例展示了各方法的具体用法,适合 Java 开发者快速复习或入门。

List 是一个有序的集合,可以把它想象成一个动态数组。
在 Java 中,最常用的实现类是 ArrayList。
// 创建一个 List
List<String> list = new ArrayList<>();
注意:List 是接口,ArrayList 是实现类。一般都用这种写法。
List<String> fruits = new ArrayList<>();
fruits.add("苹果"); // 加到末尾
fruits.add("香蕉");
fruits.add("橙子");
System.out.println(fruits); // [苹果,香蕉,橙子]
fruits.add(1, "葡萄"); // 插入到索引 1 的位置
System.out.println(fruits); // [苹果,葡萄,香蕉,橙子]
List<String> moreFruits = Arrays.asList("西瓜", "哈密瓜");
fruits.addAll(moreFruits);
System.out.println(fruits); // [苹果,葡萄,香蕉,橙子,西瓜,哈密瓜]
String first = fruits.get(0); // 第一个
String second = fruits.get(1); // 第二个
System.out.println(first); // 苹果
System.out.println(second); // 葡萄
注意:索引从 0 开始,别越界了!否则会抛 IndexOutOfBoundsException。
fruits.set(0, "草莓"); // 把第一个改成草莓
System.out.println(fruits); // [草莓,葡萄,香蕉,橙子,西瓜,哈密瓜]
fruits.remove(0); // 删除第一个
System.out.println(fruits); // [葡萄,香蕉,橙子,西瓜,哈密瓜]
fruits.remove("香蕉"); // 删除香蕉这个元素
System.out.println(fruits); // [葡萄,橙子,西瓜,哈密瓜]
fruits.clear(); // 全部删掉
System.out.println(fruits); // []
boolean hasOrange = fruits.contains("橙子");
System.out.println(hasOrange); // true
int position = fruits.indexOf("橙子");
System.out.println(position); // 1(找不到返回 -1)
boolean empty = fruits.isEmpty();
System.out.println(empty); // false(因为里面有东西)
这是常用的操作之一。
for (int i = 0; i < fruits.size(); i++) {
System.out.println(fruits.get(i));
}
for (String fruit : fruits) {
System.out.println(fruit);
}
Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
String fruit = it.next();
System.out.println(fruit);
}
fruits.forEach(fruit -> System.out.println(fruit));
fruits.forEach(System.out::println);
List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(8);
numbers.add(1);
Collections.sort(numbers);
System.out.println(numbers); // [1, 2, 5, 8]
List<String> names = new ArrayList<>();
names.add("Tom");
names.add("Alice");
names.add("Bob");
names.add("Diana");
// 按长度排序
names.sort(Comparator.comparingInt(String::length));
System.out.println(names); // [Tom, Bob, Alice, Diana]
String[] array = fruits.toArray(new String[0]);
for (String fruit : array) {
System.out.println(fruit);
}
String[] colors = {"红", "蓝", "绿"};
List<String> colorList = Arrays.asList(colors);
System.out.println(colorList); // [红,蓝,绿]
注意:这个方法返回的 List 不能增删(是固定长度的)。如果需要可变的:
List<String> mutableList = new ArrayList<>(Arrays.asList(colors));
List<String> a = Arrays.asList("1", "2", "3");
List<String> b = Arrays.asList("1", "2", "3");
System.out.println(a.equals(b)); // true
List<String> original = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> copy = new ArrayList<>(original);
List<String> words = new ArrayList<>(Arrays.asList("hello", "world"));
words.replaceAll(s -> s.toUpperCase());
System.out.println(words); // [HELLO, WORLD]
List<Integer> nums = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
List<Integer> even = nums.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(even); // [2, 4, 6]
| 操作 | 常用方法 |
|---|---|
| 添加 | add(), addAll() |
| 获取 | get() |
| 修改 | set() |
| 删除 | remove(), clear() |
| 查找 | contains(), indexOf() |
| 遍历 | for, forEach, Iterator |
| 排序 | Collections.sort(), list.sort() |
List 是 Java 开发中最基础也最重要的集合类,一定要熟练掌握。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online