Java List 常用方法全攻略

给 Java 新手的超全 List 使用指南


前言

学 Java 的人,几乎每天都要和 `List` 打交道。

它是最常用的数据结构之一,面试会问、工作会用、代码里到处都有它的身影。

别担心,这篇博客不会堆砌概念,而是用**大白话 + 大量代码**,带你把 List 真正搞懂。

什么是 List?

`List` 是一个**有序的集合**,你可以把它想象成一个**动态数组**。

  • ✅ 可以放重复的元素

  • ✅ 有索引(从 0 开始)

  • ✅ 长度可以动态增长

在 Java 中,最常用的实现类是 `ArrayList`。

java 复制代码
// 创建一个 List
List<String> list = new ArrayList<>();

注意啦:`List` 是接口,`ArrayList` 是实现类。一般都用这种写法。

1. 添加元素

add() --- 往里加

java 复制代码
List<String> fruits = new ArrayList<>();

fruits.add("苹果");      // 加到末尾
fruits.add("香蕉");
fruits.add("橙子");

System.out.println(fruits);  // [苹果, 香蕉, 橙子]

add(index, element) --- 插队

java 复制代码
fruits.add(1, "葡萄");  // 插入到索引 1 的位置

System.out.println(fruits);  // [苹果, 葡萄, 香蕉, 橙子]

addAll() --- 批量添加

java 复制代码
List<String> moreFruits = Arrays.asList("西瓜", "哈密瓜");
fruits.addAll(moreFruits);

System.out.println(fruits);  // [苹果, 葡萄, 香蕉, 橙子, 西瓜, 哈密瓜]

2. 获取元素

get(index) --- 取出来

java 复制代码
String first = fruits.get(0);    // 第一个
String second = fruits.get(1);  // 第二个

System.out.println(first);   // 苹果
System.out.println(second);  // 葡萄

⚠️ **注意**:索引从 0 开始,别越界了!否则会抛 `IndexOutOfBoundsException`。

3. 修改元素

set(index, element) --- 替换

java 复制代码
fruits.set(0, "草莓");  // 把第一个改成草莓

System.out.println(fruits);  // [草莓, 葡萄, 香蕉, 橙子, 西瓜, 哈密瓜]

4. 删除元素

remove(index) --- 按索引删

java 复制代码
fruits.remove(0);  // 删除第一个

System.out.println(fruits);  // [葡萄, 香蕉, 橙子, 西瓜, 哈密瓜]

remove(element) --- 按内容删

java 复制代码
fruits.remove("香蕉");  // 删除"香蕉"这个元素

System.out.println(fruits);  // [葡萄, 橙子, 西瓜, 哈密瓜]

clear() --- 清空全部

java 复制代码
fruits.clear();  // 全部删掉

System.out.println(fruits);  // []

5. 查找元素

contains() --- 查是否存在

java 复制代码
boolean hasOrange = fruits.contains("橙子");
System.out.println(hasOrange);  // true

indexOf() --- 查位置

java 复制代码
int position = fruits.indexOf("橙子");
System.out.println(position);  // 1(找不到返回 -1)

isEmpty() --- 判空

java 复制代码
boolean empty = fruits.isEmpty();
System.out.println(empty);  // false(因为里面有东西)

6. 遍历 List

这是最常用的操作之一,必须掌握!

普通 for 循环

java 复制代码
for (int i = 0; i < fruits.size(); i++) {
    System.out.println(fruits.get(i));
}

增强 for 循环(推荐新手用)

java 复制代码
for (String fruit : fruits) {
    System.out.println(fruit);
}

Iterator(面试常问!)

java 复制代码
Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    System.out.println(fruit);
}

forEach(Java 8+)

java 复制代码
fruits.forEach(fruit -> System.out.println(fruit));

方法引用(更简洁)

java 复制代码
fruits.forEach(System.out::println);

7. 排序

Collections.sort() --- 简单排序

java 复制代码
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]

自定义排序(Comparator)

java 复制代码
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]

8. 转换成数组

java 复制代码
toArray()

String[] array = fruits.toArray(new String[0]);

for (String fruit : array) {
    System.out.println(fruit);
}

9. 数组转 List

Arrays.asList()

java 复制代码
String[] colors = {"红", "蓝", "绿"};
List<String> colorList = Arrays.asList(colors);

System.out.println(colorList);  // [红, 蓝, 绿]

⚠️ 注意:这个方法返回的 List **不能增删**(是固定长度的)。如果需要可变的:

java 复制代码
List<String> mutableList = new ArrayList<>(Arrays.asList(colors));

10. 常用技巧合集

判断两个 List 是否相等

java 复制代码
List<String> a = Arrays.asList("1", "2", "3");
List<String> b = Arrays.asList("1", "2", "3");

System.out.println(a.equals(b));  // true

复制 List

java 复制代码
List<String> original = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> copy = new ArrayList<>(original);

替换所有元素(Java 8+)

java 复制代码
List<String> words = new ArrayList<>(Arrays.asList("hello", "world"));
words.replaceAll(s -> s.toUpperCase());
System.out.println(words);  // [HELLO, WORLD]

过滤元素(Java 8+ Stream)

java 复制代码
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 开发中最基础也最重要的集合类,**一定要熟练掌握**。

建议:把上面的代码自己跑一遍,感受一下各个方法的效果。动手比看十遍都管用!

如果觉得有帮助,欢迎收藏、转发。有问题评论区见~

相关推荐
摇滚侠13 分钟前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql
keep one's resolveY36 分钟前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
天空属于哈夫克31 小时前
企业微信API常见的错误和解决方案
java·数据库·企业微信
摇滚侠2 小时前
VMvare 虚拟机 Oracle19c 安装步骤,远程连接 Oracle19c,百度网盘安装包
java·oracle
梁萌2 小时前
idea报错找不到XX包的解决方法
java·intellij-idea·启动报错·缺少包
Agent产品评测局2 小时前
生产排期与MES/ERP系统打通,实操方法详解 —— 2026企业级智能体自动化选型与实战指南
java·运维·人工智能·ai·chatgpt·自动化
阿丰资源2 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
呱牛do it3 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 8)
java
消失的旧时光-19433 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
NE_STOP4 小时前
Redis--发布订阅命令和Redis事务
java