Lambda 表达式是 Java 8 引入的一个重要特性,它提供了一种简洁、灵活的函数式编程方式。Lambda 表达式常见的用法包括以下几个方面:
-
集合操作:Lambda 表达式可以与集合框架一起使用,提供了便捷的集合操作方式,如遍历、过滤、映射、排序等。
-
遍历集合:可以使用
forEach方法结合 Lambda 表达式遍历集合中的元素。List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.forEach(name -> System.out.println(name));
-
过滤集合:可以使用 filter 方法结合 Lambda 表达式对集合进行筛选。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
映射集合:可以使用 map 方法结合 Lambda 表达式对集合中的元素进行映射转换。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<Integer> nameLengths = names.stream().map(name -> name.length()).collect(Collectors.toList());
函数式接口:Lambda 表达式常用于函数式接口的实现。函数式接口是只包含一个抽象方法的接口,可以使用 Lambda 表达式来快速实现接口的匿名类。
// 定义一个函数式接口
interface Calculator {
int calculate(int a, int b);
}
// 使用 Lambda 表达式实现函数式接口
Calculator addition = (a, b) -> a + b;
int result = addition.calculate(3, 4); // 结果为 7
线程和并发编程:Lambda 表达式可以简化线程和并发编程的代码编写。通过 Lambda 表达式,可以直接传递任务给线程或者执行并发操作。
// 使用 Lambda 表达式创建线程
new Thread(() -> {
System.out.println("Running in a separate thread");
}).start();
// 使用 Lambda 表达式并行处理任务
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.parallelStream().forEach(number -> {
System.out.println("Processing number: " + number);
});
排序和比较:Lambda 表达式可以用于排序和比较操作,提供了灵活的排序方式。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 使用 Lambda 表达式进行字符串排序
names.sort((name1, name2) -> name1.compareTo(name2));
// 使用 Lambda 表达式进行自定义对象排序
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20)
);
people.sort((person1, person2) -> person1.getAge() - person2.getAge());
Lambda 表达式的使用可以简化代码,提高开发效率,使代码更加清晰和易读。它是 Java 8 引入的重要特性,也是函数式编程在 Java 中的实现方式之一。以上是 Lambda 表达式的一些常见用法示例,你可以根据具体的开发场景灵活运用。