在 Java 中,Lambda表达式 是 Java 8 引入的一个特性,用于简化代码,特别是在需要使用 函数式接口 的场景。它提供了一种简洁的方式来表示匿名函数,使代码更简洁和可读。
✅1. Lambda 表达式的基本语法
Lambda 表达式的语法结构如下:
- 参数列表:可以有 0 个或多个参数。
- 箭头操作符
->
:用于分隔参数和方法体。
- 方法体:包含具体的代码逻辑。
示例:
1 2 3 4 5 6 7 8 9 10 11
| Runnable r = () -> System.out.println("Hello, Lambda!"); r.run();
interface Calculator { int add(int a, int b); }
Calculator calc = (a, b) -> a + b; System.out.println("结果: " + calc.add(5, 3));
|
✅2. 使用 Lambda 的条件
Lambda 表达式通常用于函数式接口。
- 函数式接口:只包含一个抽象方法的接口,通常用
@FunctionalInterface
注解标识。
- Java 自带了很多函数式接口,例如
Runnable
、Comparator
、Consumer
等。
自定义函数式接口
1 2 3 4 5 6 7 8 9 10 11
| @FunctionalInterface interface Greeting { void sayHello(String name); }
public class Main { public static void main(String[] args) { Greeting greeting = name -> System.out.println("你好, " + name); greeting.sayHello("小明"); } }
|
✅3. 常见 Lambda 用法
(1) 使用 Lambda 实现 Runnable
1 2
| Thread thread = new Thread(() -> System.out.println("线程运行中")); thread.start();
|
(2) 使用 Lambda 进行集合遍历
1 2 3 4 5 6 7 8 9 10 11 12 13
| import java.util.ArrayList;
public class Main { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++");
list.forEach(item -> System.out.println(item)); } }
|
(3) 使用 Lambda 进行排序
1 2 3 4 5 6 7 8 9 10 11
| import java.util.*;
public class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Banana", "Apple", "Orange");
Collections.sort(list, (a, b) -> a.compareTo(b)); System.out.println(list); } }
|
✅4. 使用方法引用
当 Lambda 表达式仅调用一个现有方法时,可以使用方法引用进一步简化代码。
语法: 类名::方法名
或 对象名::方法名
示例:
1 2 3 4
| List<String> list = Arrays.asList("Banana", "Apple", "Orange");
list.forEach(System.out::println);
|
等价于:
1
| list.forEach(item -> System.out.println(item));
|
✅5. 总结
- Lambda 表达式 简化了匿名类的写法。
- 只能用于函数式接口。
- 使用
->
分隔参数和方法体。
- 可以结合方法引用进一步简化代码。