Lambda 参数列表与箭头运算符的作用?
Lambda 表达式的核心结构是 “参数列表 -> 代码体”,其中参数列表和箭头运算符(->)是 Lambda 的语法基础,各自承担关键作用:
# 1. Lambda 参数列表的作用
- 核心作用:接收外部传入的参数,为代码体提供运算数据;
- 语法规则:
- 无参数:用空括号表示(
() -> System.out.println("无参数")); - 单个参数:可省略括号(
num -> num * 2),也可保留括号((num) -> num * 2); - 多个参数:必须用括号包裹,参数之间用逗号分隔(
(a, b) -> a + b); - 类型声明:参数类型可省略(编译器自动推导),也可显式声明(
(int a, String b) -> a + b.length());
- 无参数:用空括号表示(
- 注意事项:参数列表的数量、类型必须与目标函数式接口的抽象方法一致(如
Predicate<Integer>的test方法接收 1 个 Integer 参数,Lambda 参数列表需匹配)。
# 2. 箭头运算符(->)的作用
- 核心作用:分隔参数列表和代码体,表明 “参数传入后执行的逻辑”;
- 语法规则:箭头运算符左侧是参数列表,右侧是代码体(单个表达式或代码块);
- 代码体规则:
- 单个表达式:可省略大括号和
return,表达式结果自动作为返回值((a, b) -> a - b); - 多个语句:必须用大括号包裹,若有返回值需显式写
return((a, b) -> { int sum = a + b; return sum; });
- 单个表达式:可省略大括号和
- 本质意义:将参数列表与代码体关联,实现 “函数作为参数传递” 的核心逻辑(如
list.sort((a,b) -> a.compareTo(b)),箭头运算符将排序逻辑与sort方法关联)。
# 示例
// 1. 无参数 + 单个语句
Runnable run = () -> System.out.println("Lambda无参数执行");
run.run();
// 2. 单个参数(省略括号) + 单个表达式
Consumer<Integer> print = num -> System.out.println("数字:" + num);
print.accept(10);
// 3. 多个参数 + 代码块(带return)
Comparator<String> comparator = (s1, s2) -> {
if (s1.length() == s2.length()) {
return s1.compareTo(s2);
}
return s1.length() - s2.length();
};
List<String> list = Arrays.asList("apple", "banana");
Collections.sort(list, comparator);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#
上次更新: 12/30/2025