一、Lambda 箭头函数
在 JDK 8 之后,Lambda 表达式和箭头函数(Lambda Arrow Function)的引⼊极⼤地提升了 Java 语 ⾔的简洁性。
它允许我们以简洁的⽅式表示匿名函数(即没有名称的函数)。
Lambda 表达式的基本语法是 (parameters) -> expression 或 (parameters) -> { statements; } 。
用途:
1、简化代码:特别是在处理集合类时,Lambda 表达式可以避免冗⻓的循环和条件语句,使代码更简 洁。
2、⽀持函数式编程:Lambda 表达式与函数式接⼝结合,使得 Java 更好地⽀持函数式编程范式。
3、并⾏处理:与 Java 8 引⼊的 Stream API 结合,Lambda 表达式可以实现更⽅便的并⾏处理。
案例 : 使⽤ Lambda 表达式遍历 List 集合并打印元素
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(str -> System.out.println(str));
二、Lambda 表达式的详细讲解
语法基础:
箭头操作符: -> 是 Lambda 表达式的核⼼,它将参数列表和函数体分隔开。
参数列表:可以是明确类型的参数,也可以根据上下⽂推断类型(即类型推断)。
函数体:可以是单个表达式(返回该表达式的值),也可以是多条语句(⽤花括号包围)。
第⼀部分为括号内⽤逗号分隔的形式参数,参数是函数式接⼝⾥⾯⽅法的参数;
第⼆部分为⼀个箭头符号:->;
第三部分为⽅法体,可以是表达式和代码块
参数列表 :
括号中参数列表的数据类型可以省略不写
括号中的参数只有⼀个,那么参数类型和()都可以省略不写
⽅法体:如果{}中的代码只有⼀⾏,⽆论有返回值,可以省略{}、return、分号 要⼀起省略,其他则需
要加上
三、函数式接口
Lambda 表达式需要函数式接⼝的⽀持。函数式接⼝是只包含⼀个抽象⽅法的接⼝。
@FunctionalInterface 注解⽤于表明接⼝是函数式接⼝ (不是必须的,但加上这个注解可以增 加代码的可读性)
示例
⽆参数、⽆返回值的 Lambda 表达式: () -> System.out.println("Hello, Lambda!")
接收⼀个参数并返回其值的 Lambda 表达式: (x) -> x 或 (Integer x) -> x (类型可以推 断)
接收两个参数并返回它们的和的 Lambda 表达式: (x, y) -> x + y
案例实战(集合容器⾥⾯的字符串排序: 使⽤ Lambda 表达式替换匿名类实现接⼝):
//使⽤ Lambda 表达式的⽅式:
public static void main(String[] args) {
List<String> list =Arrays.asList("aaa","ggg","ffff","ccc");
Collections.sort(list, (a,b)->b.compareTo(a)
);
for (String string : list) {
System.out.println(string);
}
}