在Java中,lambda表达式是一种简洁的写法,用来表示只有一个抽象方法的接口(即函数式接口)。自从Java 8开始,lambda表达式被引入,极大地简化了代码的编写。
下面是一些使用lambda表达式的示例:
1. 简化接口实现
假设我们有一个函数式接口GreetingService,如下所示:
@FunctionalInterface
public interface GreetingService {
void greet(String name);
}使用传统的匿名类实现这个接口:
GreetingService greetingService = new GreetingService() {
@Override
public void greet(String name) {
System.out.println("Hello, " + name);
}
};使用Lambda表达式简化上述代码:
GreetingService greetingService = (name) -> System.out.println("Hello, " + name);简化创建线程写法(简化Runnable和Callable的实现)
使用Lambda表达式创建线程执行任务
new Thread(() -> System.out.println("Thread running")).start();2. 使用Lambda表达式与函数式接口的常见用法
2.1 与Stream API结合使用
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name));2.2 使用Comparator进行排序
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.sort(Comparator.comparing(name -> name.length()));3. 作为方法参数
public void executeTask(Runnable task) {
task.run();
}
// 使用Lambda表达式调用
executeTask(() -> System.out.println("Task executed"));4. Lambda表达式与函数式接口的内置方法引用
Java 8还引入了方法引用,它是一种更简洁的lambda表达式,可以用来直接引用已存在的方法或构造函数。例如:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(System.out::println); // 使用方法引用简化代码
评论区