Lambda表达式入门,看这篇就够了!
发布日期:2025-04-04 00:50:39 浏览次数:10 分类:精选文章

本文共 2240 字,大约阅读时间需要 7 分钟。

Lambda 表达式是 JDK 8 引入的全新特性,为 Java 代码增添了更多的优雅和灵活性,特别是在集合操作和功能式接口中表现突出。掌握 Lambda 表达式能够显著化简代码,减少 voir macros 的使用,使代码更加简洁高效。以下将从 Lambda 的基础语法、优化技巧以及实际应用场景等方面进行详细讲解。

一、Lambda 表达式的基础语法

Lambda 表达式的语法形式为 (参数列表) -> {方法体},其中 -> 是 lambda 运算符,读作 "goes to"。接下来,我们将深入了解不同类型接口的定义与应用。

1.接口的定义

{-- 多参数无返回@FunctionalInterface public interface NoReturnMultiParam { void method(int a, int b); }- 无参无返回@FunctionalInterface public interface NoReturnNoParam { void method(); }- 一参数无返回@FunctionalInterface public interface NoReturnOneParam { void method(int a); }- 多参数有返回@FunctionalInterface public interface ReturnMultiParam { int method(int a, int b); }- 无参有返回@FunctionalInterface public interface ReturnNoParam { int method(); }- 一参数有返回@FunctionalInterface public interface ReturnOneParam { int method(int a); }}

2. Lambda 表达式的写法与优化技巧

{1. 去除参数类型:可以省略参数类型,但需确保所有参数都省略。例如:java NoReturnMultiParam lambda1 = (a, b) -> { System.out.println("简化参数类型"); };2. 简化参数小括号:如果只有一个参数,可以省略小括号。java NoReturnOneParam lambda2 = a -> { System.out.println("简化参数小括号"); };3. 去除方法体大括号:如果方法体只有一条语句,省略大括号。java NoReturnNoParam lambda3 = () -> System.out.println("简化方法体大括号");4. 去除 return 语句的方法体大括号:若方法体只有 return 语句且结果可以直接表达。java ReturnOneParam lambda4 = a -> a + 3; ReturnMultiParam lambda5 = (a, b) -> a + b;

二、Lambda 表达式的实际应用

1. Lambda 表达式作为接口实现

{```javaReturnOneParam lambda1 = a -> doubleNum(a);System.out.println(lambda1.method(3));

ReturnOneParam lambda2 = Exe1::doubleNum;System.out.println(lambda2.method(3));Exe1 exe = new Exe1();ReturnOneParam lambda4 = exe::addTwo;System.out.println(lambda4.method(2));```

2. 构造方法的引用

{```javaItemCreatorBlankConstruct creator = () -> new Item();Item item = creator.getItem();

ItemCreatorParamContruct creator3 = Item::new;Item item3 = creator3.getItem(112, "鼠标", 135.99);```

3. 线程的创建

{java Thread t = new Thread(() -> { for (int i = 0; i < 10; i++) { System.out.println(2 + ":" + i); } }); t.start();

4. 集合的操作

{通过集合的 forEach 方法和 removeIf 方法完成操作,简化代码实现。

预定义接口如 `Consumer` 和 `Predicate` 的使用,使数据处理更加直观。

}

5. 排序操作

{java list.sort((o1, o2) -> o1.getId() - o2.getId());}

三、注意事项与常见问题

在 Lambda 表达式的使用过程中,需注意变量捕获的问题。由于 Java 8 中的 Lambda 表达式引入了块作用域的概念,但仍需谨慎处理包围它的作用域内的变量。但在一些情况下,特别是在旧版本的 Java 中,可能会遇到所谓的“仅读”变量无法被修改的问题,需要确保 Lambda 中操作的是可变的对象或通过参数传递新状态。

上一篇:Lambda表达式详解
下一篇:lambda表达式与匿名内部类与双冒号(::)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年05月10日 17时48分43秒