Lambda表达式是Java8引入的一种新的编程特性,它允许以一种更简洁和表达性更强的方式来编写匿名方法。Lambda表达式可以看作是一段没有名称的代码块,它接受参数并返回值,使得可以将功能作为参数传递给方法或者将其存储为变量。
Lambda表达式在Java中是一种简短的代码块,它接受参数并返回一个值。本质上,它是一个没有名称的方法,允许将功能作为参数传递给方法或者存储为变量。
Lambda表达式的基本语法如下:
(parameters) -> expression
或者,如果有多个语句:
(parameters) -> {
// multiple statements
}
要使用Lambda表达式,需要一个函数式接口。函数式接口是一个恰好有一个抽象方法的接口。例如Runnable、Callable以及具有单个抽象方法的自定义接口。
Lambda表达式提供了以下好处:
让通过一个简单的Lambda表达式示例开始。将使用Runnable接口来演示:
以下是一个使用Runnable接口的Lambda表达式示例:
public class LambdaExample {
public static void main(String[] args) {
// 传统方式
Runnable oldRunnable = new Runnable() {
@Override
public void run() {
System.out.println("Running in a thread!");
}
};
new Thread(oldRunnable).start();
// 使用Lambda表达式
Runnable lambdaRunnable = () -> System.out.println("Running in a thread with Lambda!");
new Thread(lambdaRunnable).start();
}
}
输出:
Running in a thread!
Running in a thread with Lambda!
Lambda函数在处理集合时特别有用。以下示例展示了如何使用Lambda表达式对字符串列表进行排序:
import java.util.Arrays;
import java.util.List;
public class LambdaListExample {
public static void main(String[] args) {
List names = Arrays.asList("John", "Jane", "Paul", "Alice");
// 使用Lambda表达式对列表进行排序
names.sort((name1, name2) -> name1.compareTo(name2));
// 打印排序后的名称
names.forEach(name -> System.out.println(name));
}
}
输出:
Alice
Jane
John
Paul
Lambda表达式在与Java流结合进行过滤和映射操作时表现出色。以下是如何使用Lambda表达式过滤并处理整数列表的示例:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class LambdaStreamExample {
public static void main(String[] args) {
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 过滤偶数并平方它们
List squaredEvens = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.collect(Collectors.toList());
// 打印结果
squaredEvens.forEach(System.out::println);
}
}
输出:
4
16
36
64
100