Java Lambda 表达式
Lambda 表达式是 Java 8 引入的重要特性,它简化了函数式编程,使代码更加简洁。理解 Lambda 表达式的使用是现代 Java 开发的基础。本章将详细介绍 Java 中的 Lambda 表达式。
Lambda 基本语法
什么是 Lambda 表达式
Lambda 表达式是一个匿名函数,可以理解为一段可以传递的代码。
基本语法:
(参数列表) -> { 方法体 }
Lambda 表达式的形式
// 1. 无参数
() -> System.out.println("Hello");
// 2. 单个参数(可以省略括号)
x -> x * 2
(x) -> x * 2
// 3. 多个参数
(x, y) -> x + y
// 4. 方法体多条语句
(x, y) -> {
int sum = x + y;
return sum;
}
// 5. 有返回值的 Lambda
(x, y) -> x + y
Lambda 表达式示例
// 传统方式:匿名内部类
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello");
}
};
// Lambda 表达式
Runnable r2 = () -> System.out.println("Hello");
// 使用
r1.run();
r2.run();
函数式接口使用
什么是函数式接口
函数式接口是只有一个抽象方法的接口,Lambda 表达式可以替代函数式接口的实例。
@FunctionalInterface
public interface MyFunction {
int apply(int x, int y);
}
// 使用 Lambda 表达式
MyFunction add = (x, y) -> x + y;
MyFunction multiply = (x, y) -> x * y;
int result1 = add.apply(3, 4); // 7
int result2 = multiply.apply(3, 4); // 12
常见的函数式接口
import java.util.function.*;
// Predicate<T>:判断条件
Predicate<String> isEmpty = s -> s.isEmpty();
boolean result = isEmpty.test(""); // true
// Function<T, R>:转换函数
Function<String, Integer> length = s -> s.length();
int len = length.apply("Hello"); // 5
// Consumer<T>:消费数据
Consumer<String> printer = s -> System.out.println(s);
printer.accept("Hello"); // 输出:Hello
// Supplier<T>:提供数据
Supplier<String> supplier = () -> "Hello";
String value = supplier.get(); // "Hello"