必须掌握的 Lambda 表达式

简介: 必须掌握的 Lambda 表达式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家✌

💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

1688358191057.jpg

写在前面

我觉得 Lambda 用的是方便,代码是很简洁,但是不要为了用它而用它,它在简洁的前提下,一定在可读性、可调试性、可维护性上有牺牲的。

1、什么是Lambda表达式

==Lambda表达式是一种函数式编程的特性,它是Java 8引入的一种新语法。Lambda表达式可以用来创建简洁、灵活的匿名函数,以替代传统的匿名内部类的写法。==

Lambda表达式的基本语法如下:
(参数列表) -> { 表达式或代码块 }

Lambda表达式由三个部分组成:

  1. 参数列表:定义了Lambda表达式所需的参数,可以是零个或多个参数。
  2. 箭头符号:由"->"组成,用于分隔参数列表和Lambda表达式的主体。
  3. 主体:包含了Lambda表达式的具体实现,可以是一个表达式或一个代码块。

Lambda表达式可以赋值给一个函数式接口类型的变量,函数式接口是只有一个抽象方法的接口。Lambda表达式的参数和返回值类型必须与函数式接口中的抽象方法相匹配。

Lambda表达式的优点是它们简洁、灵活,并且可以在需要函数对象的地方直接使用,避免了冗余的代码。它们在集合操作、多线程编程等场景中特别有用。

2、Lambda表达式的优缺点

Lambda表达式在Java中引入了函数式编程的概念,带来了许多优点和一些缺点。下面是Lambda表达式的优缺点:

==优点:==

  1. 简洁性:Lambda表达式可以大大减少代码的冗余和重复,使代码更加简洁、可读性更高。
  2. 灵活性:Lambda表达式可以作为函数式接口的实现,使得代码更加灵活,可以快速适应不同的需求。
  3. 函数式编程:Lambda表达式使得函数式编程更加容易,可以使用函数作为参数、返回函数等,提高了代码的抽象能力和可复用性。
  4. 并行处理:Lambda表达式可以与Stream API结合使用,方便进行集合的并行处理,提高程序的性能。

==缺点:==

  1. 学习曲线:对于初学者来说,Lambda表达式的语法和概念可能会比较陌生,需要一定的学习和适应时间。
  2. 可读性:有时候Lambda表达式可能会过于简洁,导致代码可读性降低,特别是当Lambda表达式较长或复杂时。
  3. 调试困难:Lambda表达式的调试可能会比较困难,特别是在Lambda表达式中包含复杂的逻辑或多行代码时。

    3、Lambda表达式的应用场景

    Lambda表达式在Java中的应用场景非常广泛,特别是在以下几个方面:

  4. 集合操作:Lambda表达式可以与Java 8引入的Stream API结合使用,方便进行集合的遍历、筛选、映射、排序等操作。它可以代替传统的循环和条件语句,使代码更加简洁和易读。

  5. 多线程编程:Lambda表达式可以简化多线程编程的代码,特别是在使用函数式接口和Java 8新增的函数式接口(如Supplier、Consumer、Predicate等)时。它可以作为线程的任务或回调函数,使得代码更加清晰和易于理解。
  6. GUI事件处理:Lambda表达式可以用于处理GUI界面中的事件,例如按钮点击事件、菜单选择事件等。它可以代替传统的匿名内部类,使得事件处理代码更加简洁和可读。
  7. 排序和比较:Lambda表达式可以用于定义自定义的排序规则和比较器,特别是在使用Java 8新增的Comparator接口时。它可以简化排序和比较的代码,使得代码更加灵活和可扩展。
  8. 函数式接口的实现:Lambda表达式可以作为函数式接口的实现,特别是在需要定义简单的回调函数或函数对象时。它可以代替传统的匿名内部类,使得代码更加简洁和可读。

4、Lambda表达式用法

Java Lambda表达式有多种用法,下面列举了一些常见的用法:

  1. 作为函数式接口的实现
    Lambda表达式可以用来实现函数式接口(只有一个抽象方法的接口)。例如:
@FunctionalInterface
interface MathOperation {
   
   
   int operate(int a, int b);
}
    // 使用Lambda表达式实现加法
MathOperation addition = (a, b) -> a + b;
int result = addition.operate(3, 5); // 输出:8
  1. 作为方法引用
    Lambda表达式可以用来引用已有的方法,可以是静态方法、实例方法或构造方法。例如:
MathOperation subtraction = Integer::subtract;
int result = subtraction.operate(5, 3); // 输出:2

// 引用实例方法
String str = "Hello World";
Function<Integer, String> substring = str::substring;
String result = substring.apply(6); // 输出:"World"

// 引用构造方法
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> list = listSupplier.get();
  1. 作为集合操作的参数
    Lambda表达式可以用于集合操作,如过滤、映射、排序等。例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    // 过滤
   List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList()); // 输出:[2, 4]
    // 映射
   List<String> numberStrings = numbers.stream()
                                       .map(String::valueOf)
                                       .collect(Collectors.toList()); // 输出:["1", "2", "3", "4", "5"]
    // 排序
   List<Integer> sortedNumbers = numbers.stream()
                                        .sorted()
                                        .collect(Collectors.toList()); // 输出:[1, 2, 3, 4, 5]

==这只是Java Lambda表达式的一些常见用法,它们使得代码更加简洁、可读性更高,并且在函数式编程和集合操作中非常有用。==
1686494501743.jpg

💕💕 本文由激流原创,原创不易,感谢支持
💕💕喜欢的话记得点赞收藏啊
1687869804912.jpg

目录
相关文章
|
开发工具
【开发工具】解决 Goland 控制台输出错位问题
【开发工具】解决 Goland 控制台输出错位问题
451 0
|
开发工具 Android开发 数据安全/隐私保护
搞机:AS自带模拟器AVD Root 和 Xposed安装(上)
AS自带模拟器AVD Root 和 Xposed安装
1505 0
|
Web App开发 编解码 安全
在高版本谷歌Chrome浏览器中用VLC播放海康、大华RTSP实时视频完全方案
随着互联网基础设施的完善以及4G、5G等技术的大规模商用,在Chrome、Firefox、Edge等浏览器播放RTSP视频流也慢慢成为了信息化系统的行业标准。早些年还可用VLC播放器在网页中播放RTSP视频流,好景不长,2015年Chrome、Firefox等浏览器取消了对 NPAPI插件的支持,导致在高版本的Chrome等网页中播放海康威视、大华等摄像头RTSP视频流也成了奢望。
2899 0
|
9月前
|
设计模式 网络协议 Java
02.单一职责原则详解
单一职责原则(SRP)是面向对象设计的重要原则,强调一个类或模块应仅负责完成一个特定的职责或功能。通过将复杂的功能分解为多个粒度小、功能单一的类,可以提高系统的灵活性、可维护性和可扩展性。本文详细介绍了如何理解单一职责原则,包括方法、接口和类层面的应用,并通过具体例子解释了其优势和判断标准。此外,还探讨了在实际开发中如何平衡类的设计,避免过度拆分导致的复杂性增加。
291 5
|
网络安全 数据安全/隐私保护
【网络安全 | Crypto】hidden key 江苏工匠杯
【网络安全 | Crypto】hidden key 江苏工匠杯
380 0
【网络安全 | Crypto】hidden key 江苏工匠杯
|
存储 缓存 UED
【已解决】任务栏图标显示异常问题
【已解决】任务栏图标显示异常问题
|
11月前
|
Oracle 关系型数据库 Windows
如何彻底卸载 IDEA,将IDEA完全删除
本文提供了一个详细的教程,指导用户如何彻底卸载 IntelliJ IDEA,包括使用Uninstall.exe程序和通过注册表删除残留项的步骤。
6514 3
如何彻底卸载 IDEA,将IDEA完全删除
|
Ubuntu 搜索推荐 Linux
让你的SSH连接提示更加个性化
让你的SSH连接提示更加个性化
276 0
让你的SSH连接提示更加个性化
|
SQL 存储 Oracle
SQL优化2020最全干货总结---MySQL
BATJTMD等大厂的面试难度越来越高,但无论从大厂还是到小公司,一直未变的一个重点就是对SQL优化经验的考察。一提到数据库,先“说一说你对SQL优化的见解吧?”。
30745 2