1. 什么是Lambda表达式?
- Lambda表达式是Java 8引入的一种新特性,它提供了一种简洁、优雅的编程方式,可以让我们编写更加简洁、易读的代码。本文将详细介绍Java Lambda表达式的基本语法、特点和示例代码。
- Lambda表达式(Lambda Expression)是一种匿名函数,它允许我们将函数作为方法的参数传递。Lambda表达式的主要目的是简化代码,使其更加简洁、优雅。在Java中,Lambda表达式主要用于实现函数式接口(Functional Interface)。
2. Lambda表达式的基本语法
Lambda表达式的基本语法如下:
(parameters) -> expression
或者
(parameters) -> { statements; }
- parameters:表示Lambda表达式接受的参数列表。参数类型可以省略,编译器可以自动推断。
- ->:表示Lambda表达式的开始。
- expression:表示Lambda表达式的返回值。如果Lambda表达式只有一条语句,可以省略大括号和return关键字。
- statements:表示Lambda表达式的代码块。如果有多条语句,需要使用大括号包围。
以下是几个Lambda表达式的例子:
() -> System.out.println("Hello, World!");
(a, b) -> a + b;
(s) -> { System.out.println(s); return s.length(); };
3. Java Lambda表达式示例
3.1 实现Runnable接口
使用Lambda表达式实现Runnable接口:
public class LambdaExample {
public static void main(String[] args) {
Runnable runnable = () -> System.out.println("Hello, World!");
new Thread(runnable).start();
}
}
运行结果:
3.2 实现Comparator接口
使用Lambda表达式实现Comparator接口对列表进行排序:
public class LambdaExample {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.sort((s1, s2) -> s1.length() - s2.length());
System.out.println(names);
}
}
运行结果:
3.3 自定义函数式接口
使用Lambda表达式实现自定义的Greeting接口:
public class LambdaExample {
public static void main(String[] args) {
Greeting greeting = (name) -> System.out.println("Hello, " + name + "!");
greeting.sayHello("World");
}
}
@FunctionalInterface
interface Greeting {
void sayHello(String name);
}
运行结果: