什么是 Lambda 表达式?
Lambda 表达式是 Java 8 引入的 “匿名函数”,核心作用是 “简化代码,支持函数式编程”,本质是可传递的代码块(能作为参数传递给方法)。
# 1. 语法格式
(参数列表) -> { 代码体 }
1
- 简化规则:
- 若参数列表只有一个参数,可省略括号(如
num -> num * 2); - 若代码体只有一行,可省略大括号和
return(如(a,b) -> a + b,无需return); - 若参数类型可推导,可省略类型声明(如
(a,b) -> a - b,无需写(int a, int b))。
- 若参数列表只有一个参数,可省略括号(如
# 2. 核心特性
- 无名称:匿名函数,无需定义方法名;
- 可传递:可作为参数传入支持函数式接口的方法(如
Collections.sort(list, (a,b) -> a.compareTo(b))); - 捕获变量:可访问外部有效 final 变量(或实际不变的变量),但不能修改(如
int x=10; list.forEach(num -> System.out.println(num+x)))。
# 3. 适用场景
- 替代匿名内部类(如集合排序、线程创建);
- 结合 Stream API 进行数据处理(如
filter、map操作); - 简化回调函数(如事件监听、异步任务)。
# 示例
// 1. 集合排序(替代Comparator匿名内部类)
List<String> list = Arrays.asList("apple", "banana", "cherry");
Collections.sort(list, (s1, s2) -> s1.length() - s2.length()); // 按长度排序
// 2. 线程创建(替代Runnable匿名内部类)
new Thread(() -> System.out.println("Lambda线程执行")).start();
// 3. Stream处理
List<Integer> nums = Arrays.asList(1,2,3,4);
nums.stream().filter(n -> n % 2 == 0).forEach(n -> System.out.println(n));
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
上次更新: 12/30/2025