Lambda表达式第五版

1、为什么使用Lambda表达式

  • Lambda是一个 匿名函数,我们可以把Lambda表达式理解为是 一段可以传递的代码(讲代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,是Java的语言表达式能力得到了提升。
package com.lambda;import org.junit.Test;import java.util.Comparator;public class LambdaTest {@Testpublic void test1() {//        Runnable runnable = new Runnable() {
//            @Override
//            public void run() {
//                System.out.println("Lambda表达式");
//            }
//        };
//
//        Thread thread = new Thread(runnable);
//        thread.start();//        Runnable runnable = () -> System.out.println("Lambda表达式");
//
//        new Thread(runnable).start();//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                System.out.println("Lambda表达式");
//            }
//        }).start();new Thread(() -> System.out.println("Lambda表达式")).start();}@Testpublic void test2() {//        Comparator<Integer> com1 = new Comparator<>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return Integer.compare(o1, o2);
//            }
//        };
//
//        int compare = com1.compare(12, 21);
//        System.out.println(compare);//-1Comparator<Integer> com2 = (o1, o2) -> Integer.compare(o1, o2);int compare = com2.compare(12, 21);System.out.println(compare);//-1}}

2、Lambda表达式:语法

  • 在Java8语言中引入的一种新的语法元素和操作符。这个操作符为  “ ->  ” ,该操作符被称为  Lambda操作符  或  箭头操作符
  • 左侧:指定了Lambda表达式需要的 参数列表 ,(其实就是接口中的抽象方法的形参列表)
  • 右侧:制定了 Lambda体 ,是抽象方法的实现逻辑,也即Lambda表达式要执行的功能,(其实就是重写的抽象方法的方法体) 

3、Lambda表达式的使用(分为6种情况介绍) 

3.1、Lambda接口中的抽象方法无参,无返回值

    @Testpublic void test1() {new Thread(() -> System.out.println("Lambda表达式")).start();}

3.2、Lambda需要一个参数,但是没有返回值

    @Testpublic void test2() {
//        new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        }.accept("Lambda表达式");//        Consumer<String> consumer = (String s) -> {
//            System.out.println(s);
//        };
//        consumer.accept("Lambda表达式");Consumer<String> consumer = (s) -> System.out.println(s);consumer.accept("Lambda表达式");}

3.3、数据类型可以省略,因为可由编译器推断得出,称为“类型推断”

    @Testpublic void test3() {Consumer<String> consumer = (s) -> System.out.println(s);consumer.accept("Lambda表达式");}

3.4、Lambda若只需要一个参数时,参数的小括号可以省略

    @Testpublic void test4() {Consumer<String> consumer = s -> System.out.println(s);consumer.accept("Lambda表达式");}

3.5、 Lambda需要两个或以上的参数,多条执行语句,并且可以有返回值

    @Testpublic void test5() {Comparator<Integer> comparator = (o1, o2) -> {System.out.println(o1);System.out.println(o2);return o1.compareTo(o2);};System.out.println(comparator.compare(19, 12));//19  12  1}

3.6、当Lambda体只有一条语句时,return 与 大括号若有,都可以省略

    @Testpublic void test6() {Comparator<Integer> comparator = ((o1, o2) -> o1.compareTo(o2));System.out.println(comparator.compare(-12, -34));//1Consumer<String> consumer = s -> System.out.println(s);consumer.accept("Lambda表达式");//Lambda表达式}

4、Lambda表达式的本质

  • 作为接口的实例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/65350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高阶产品策略】设计有效的AB测试

文章目录 1、A/B测试概述2、A/B测试实施过程3、A/B测试中需要注意的地方4、从一个案例中看A/B测试 1、A/B测试概述 2、A/B测试实施过程 3、A/B测试中需要注意的地方 4、从一个案例中看A/B测试

JAVA基础-JDBC

本博客记录JAVA基础JDBC部分的学习内容 JDBC基本概念 JDBC : JAVA链接数据库&#xff0c;是JAVA链接数据库的技术的统称&#xff0c;包含如下两部分&#xff1a; 1. JAVA提供的JDBC规范&#xff08;即各种数据库接口&#xff09;存储在java.sql 和 javax.sql中的api 2. 各个数…

【小吉送书—第一期】Kali Linux高级渗透测试

文章目录 &#x1f354;前言&#x1f6f8;读者对象&#x1f388;本书资源&#x1f384;彩蛋 &#x1f354;前言 对于企业网络安全建设工作的质量保障&#xff0c;业界普遍遵循PDCA&#xff08;计划&#xff08;Plan&#xff09;、实施&#xff08;Do&#xff09;、检查&#x…

将 ChatGPT 与 ReactJS 集成以实现更智能的对话界面

在本博客中,我们将探讨如何使用 Kommunicate 平台将 ChatGPT 与 ReactJS 集成,从而更轻松地在网站上部署和管理聊天机器人。 随着技术世界的不断发展,聊天机器人已成为许多企业不可或缺的一部分,提供高效、个性化的客户交互。在众多可用的人工智能聊天机器人解决方案中,C…

pip安装mysqlclient依赖报错 /bin/sh: 1: mysql_config: not found如何解决

报错信息&#xff1a; Collecting mysqlclient2.1.0Downloading https://mirrors.aliyun.com/pypi/packages/de/79/d02be3cb942afda6c99ca207858847572e38146eb73a7c4bfe3bdf154626/mysqlclient-2.1.0.tar.gz (87 kB)|███████████████████████████…

【计算机网络】HTTP

文章目录 1.HTTP概念2. URLurlencode 和 urldecode转义规则 3. HTTP的宏观理解HTTP的请求HTTP的响应 4. 见一见HTTP请求和响应请求报头 1. 模拟一个简单的响应response响应报头 2. 从路径中获取内容ReadFile函数的实现 3.不同资源进行区分反序列化的实现ReadOneLine函数的实现P…

C++异常

文章目录 C异常异常语法代码示例 栈解旋示例代码 noexcept代码示例 异常的声明周期示例代码 异常的多态使用代码示例 C标准异常库代码示例 重写自己的异常示例代码 C异常 异常是处理程序中的错误。所谓的错误时指程序运行的过程中发生的一些异常事件(如&#xff1a;除零错误&a…

百数应用中心——生产制造管理解决方案解决行业难题

传统生产制造业面临着许多挑战&#xff0c;其中一些主要问题包括效率低下、交期压力大、需求预测不准确、生产模式复杂、异常响应慢、库存高和计划脱节等。这些问题不仅影响了生产效率和质量&#xff0c;也导致了不必要的成本和客户满意度下降。 生产制造管理应用对于企业的生产…

介绍几种使用工具

FileWatch&#xff0c;观测文件变化&#xff0c;源码地址&#xff1a;https://github.com/ThomasMonkman/filewatch nlohmann::json&#xff0c;json封装解析&#xff0c;源码地址&#xff1a;https://github.com/nlohmann/json optionparser&#xff0c;解析选项&#xff0c;源…

前端 js实现 选中数据 动态 添加在表格中

如下图展示&#xff0c;表格上方有属性内容&#xff0c;下拉选中后&#xff0c;根据选中的内容&#xff0c;添加在下方的表格中。 实现方式&#xff0c;&#xff08;要和后端约定&#xff0c;因为这些动态添加的字段都是后端返回的&#xff0c;后端自己会做处理&#xff0c…

MATLAB粒子群算法求解带容量约束的物流配送选址问题实例

粒子群算法编程问题实例: MATLAB粒子群算法求解带容量约束物流配送中心选址问题代码实例 在经度范围为(116, 118),纬度范围为(38, 40)的矩形区域内,散布着37个需求点,各个需求点的坐标及需求量见表1。要求在该矩形区域内确定N个位置建立配送中心。已知各配送中心容量不得超…

UE5.1 透明渲染流程框架图

相关文章&#xff1a; UE 透明物体绘制准备_sh15285118586的博客-CSDN博客 透明直接光和间接光生成_sh15285118586的博客-CSDN博客 Scene:Translucency-Translucency(AfterDOF)_sh15285118586的博客-CSDN博客 Scene:Translucency-Distortion &PostProcessing:ComposeTran…

Jmeter和Postman那个工具更适合做接口测试?

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人在做的接口测试&#xff0c;小白变高手…

【Tkinter系列12/15】 Toplevel窗口方法、小部件方法

25、顶级窗口 方法Toplevel 顶级窗口是 在窗口管理器下具有独立存在。它 装饰有窗管的装饰&#xff0c;可以 独立移动和调整大小。您的应用程序可以 使用任意数量的顶级窗口。 对于任何小部件&#xff0c;您可以访问其顶级窗口用&#xff1a;ww.winfo_toplevel() 创建新的顶级窗…

请一定要使用枚举和常量

1.魔法值和硬编码 在代码编写的场景中&#xff0c;会遇到提示避免去使用 魔法值&#xff08;magic numbers&#xff09;和硬编码&#xff08;hardcoding&#xff09;。 魔法值就是在代码中直接使用的&#xff0c;没有提供任何注释或解释说明其用途和含义的常数值。硬编码指的…

ubuntu18安装cmake27的方法

背景是ubuntu18默认的cmake是3.10 $ apt search cmake Sorting... Done Full Text Search... Done bear/bionic,bionic 2.3.11-1 allgenerate compilation database for Clang toolingcatkin/bionic,bionic 0.7.8-1 allLow-level build system macros and infrastructure for …

【数据蒸馏】静态数据蒸馏方法汇总

基于几何的方法 基于几何的方法假设在特征空间中彼此接近的数据点往往具有相似的属性。因此&#xff0c;基于几何的方法试图移除那些提供冗余信息的数据点&#xff0c;剩下的数据点形成一个核心集合S&#xff0c;其中jSj ≤ jTj。 Herding&#xff08;聚集&#xff09; 是一…

[足式机器人]Part3 变分法Ch01-2 数学预备知识——【读书笔记】

本文仅供学习使用 本文参考&#xff1a; 《变分法基础-第三版》老大中 《变分学讲义》张恭庆 《Calculus of Variations of Optimal Control Theory》-变分法和最优控制论-Daneil Liberzon Ch01-2 数学基础-预备知识1 1.3.2 向量场的通量和散度1.3.3 高斯定理与格林公式 1.3.2 …

etcd 备份还原

etcd 备份还原 1. 查看 etcdctl 是否已经安装 # quick check if etcdctl is available or not ETCDCTL_API3 etcdctl --help | head2. 安装 etcdctl # 获取 etcd 版本信息 kubectl exec -it etcd-master -n kube-system -- /bin/sh -c ETCDCTL_API3 /usr/local/bin/etcd --v…

FPGA SPI 驱动程序

1.引言 此驱动程序已经完成很久了&#xff0c;花了2个星期的时间&#xff0c;主要是提升程序运行的效率。最近整理文件的时候又看到了&#xff0c;记录一下。 2.程序框架分解 module adc7254_Ctrl(input sys_clk, //system clkc 50Minput re…