重学java 75.JDK新特性 ① Lambda表达式

你所做的事情,也许暂时看不到成果,你不是没有成长,而是在扎根

                                                                                                —— 24.6.19

一、函数式编程思想和Lambda表达式定义格式

1.面向对象思想:是Java的核心编程思想

        强调的是找对象,帮我们做事儿

        比如:去北京 -> 强调的是怎么去,火车,高铁,飞机,汽车,自行车,腿儿

2.jdk8开始有了个新的思想:函数式编程思想:

        强调的是结果,不强调过程

        比如:去北京->只强调去了还是没去

3.Lambda表达式

        a、定义格式:()—>{}

        b、各部分解释:

                ():重写方法的参数位置

                —>:将参数传递到方法体中

                {}:重写方法的方法体

public class Demo304Test01 {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我执行了");
            }
        }).start();

        System.out.println("————————————————————Lambda表达式——————————————————————");
        
        new Thread(()-> {
            System.out.println("我执行了");
        }).start();
    }
}

二、Lambda表达式使用前提

1.必须是函数式接口做方法参数传递

有且只有一个抽象方法的接口,用 @FunctionalInterface 去检测,就像@Override检测是否是重写方法

三、Lambda表达式省略规则

1.Lambda表达式怎么写

        a.观察是否是函数式接口做方法参数传递

        b.如果是,考虑使用Lambda表达式

        c.调用方法,以匿名内部类的形式传递实参

        d.从new接口开始到重写方法的方法名结束,选中,删除,别忘记再删除一个右半个大括号

        e.在重写方法的参数后面,方法体的大括号前面加上 ->        

/**
 * a.观察是否是函数式接口做方法参数传递
 * b.如果是,考虑使用Lambda表达式
 * c.调用方法,以匿名内部类的形式传递实参
 * d.从new接口开始到重写方法的方法名结束,选中,删除,别忘记再删除一个右半个大括号
 * e.在重写方法的参数后面,方法体的大括号前面加上->
 */
public class Demo305Test02 {
    public static void main(String[] args) {
        method(new USB() {
            @Override
            public void open() {
                System.out.println("USB打开了");
            }
        });

        System.out.println("———————————————————————Lambda表达式————————————————————");
        method(() -> {System.out.println("USB打开了");});
    }

    public static void method(USB usb){
        usb.open();
    }
}

2.省略规则:

        a.重写方法的参数类型可以干掉
        b.如果重写方法只有一个参数,所在的小括号可以干掉
        c.如果方法体中只有一句话,那么所在的大括号以及分号可以干掉
        d.如果方法体中只有一句话并且带return的,那么所在的大括号,分号以及return 可以干掉

package S107Lambda;

/**
 * a.观察是否是函数式接口做方法参数传递
 * b.如果是,考虑使用Lambda表达式
 * c.调用方法,以匿名内部类的形式传递实参
 * d.从new接口开始到重写方法的方法名结束,选中,删除,别忘记再删除一个右半个大括号
 * e.在重写方法的参数后面,方法体的大括号前面加上->
 */
public class Demo305Test02 {
    public static void main(String[] args) {
        method(new USB() {
            @Override
            public void open() {
                System.out.println("USB打开了");
            }
        });

        System.out.println("———————————————————————Lambda表达式————————————————————");

        /**
         * 2.省略规则:
         * a.重写方法的参数类型可以干掉
         * b.如果重写方法只有一个参数,所在的小括号可以干掉
         * c.如果方法体中只有一句话,那么所在的大括号以及分号可以干掉
         * d.如果方法体中只有一句话并且带return的,那么所在的大括号,分号以及return 可以干掉
         */
        method(() -> System.out.println("USB打开了"));
    }

    public static void method(USB usb){
        usb.open();
    }
}
package S107Lambda;

import java.util.ArrayList;
import java.util.Collections;

/**
 * 2.省略规则:
 * a.重写方法的参数类型可以干掉
 * b.如果重写方法只有一个参数,所在的小括号可以干掉
 * c.如果方法体中只有一句话,那么所在的大括号以及分号可以干掉
 * d.如果方法体中只有一句话并且带return的,那么所在的大括号,分号以及return 可以干掉
 */
public class Demo306Test03 {
    public static void main(String[] args) {
        ArrayList<Person> list = new ArrayList<>();
        list.add(new Person("张三",10));
        list.add(new Person("李四",8));
        list.add(new Person("王五",9));

        Collections.sort(list, (Person o1, Person o2) -> {
                return o1.getAge()-o2.getAge();
        });

        System.out.println("Lambda表达式简化形式");
        Collections.sort(list,((o1, o2) -> o1.getAge()-o2.getAge()));
        System.out.println(list);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么人们对即将推出的 Go 1.23 迭代器感到愤怒

原文&#xff1a;gingerBill - 2024.06.17 TL;DR 它让 Go 变得太“函数式”&#xff0c;而不再是不折不扣的命令式语言。 最近&#xff0c;我在 Twitter 上看到一篇帖子&#xff0c;展示了 Go 1.23&#xff08;2024 年 8 月&#xff09;即将推出的 Go 迭代器设计。据我所知&a…

35 Debian如何配置Postfix+Dovecot

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置Postfix+Dovecot 《傅老师Debian知识库系列之35》——原创 ==前言== 傅老师Debian知识库特点: 1、拆解Debian实用技能; 2、所有操作在VMware虚拟机实测完成; 3、致力于最终形成Deb…

网安人必备!开源网络安全工具TOP 10(附下载地址)

工欲善其事&#xff0c;必先利其器。对于广大的网络安全从业者&#xff0c;以及未来想要从事网络安全的人来说&#xff0c;选择并善用合适的网络安全工具&#xff0c;能有效提升工作效率。 开源网络安全工具之所以能够在众多安全解决方案中脱颖而出&#xff0c;不仅是因为它们…

1.22 LeetCode总结(基本算法)_位运算

进制的概念 进制即进位计数制&#xff0c;是利用固定的数字符号和统一的规则的带进位的计数方法。 任何一种进位计数制都有一个基数&#xff0c;基数为 X 的进位计数制称为 X 进制&#xff0c;表示每一个数位上的数运算时都是逢 X 进一。 504. 七进制数 手法1&#xff1a;当…

小林图解系统-二.硬件结构 2.4CPU缓存一致性

CPU Cache的数据写入 CPU和内存的访问性能越差越大&#xff0c;于是在CPU内部嵌入CPU Cache(高速缓存)。 CPU Cache由Cache Line组成&#xff0c;Cache Line由头标志Tag数据块Data Block组成。 如果数据写入Cache&#xff0c;内存和Cache相对应的数据将不同&#xff0c;需要…

排序(3)【归并排序】【计数排序】【排序算法度及其稳定性分析】

一.归并排序 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有…

CCAA质量管理【学习笔记】​​ 备考知识点笔记(六)质量改进系统方法与工具

第七节 质量改进系统方法与工具 1 质 量 改 进 方 法 概 述 可以说几乎每种质量管理领域的方法与工具都可以用于质量改进&#xff0c;但是一个组织在改进的整体推进中&#xff0c;往往不是采用单一的方法&#xff0c;会涉及多种改进的工具和手段&#xff0c;并依据一定的模式…

虹科免拆诊断案例 | 2022款问界M5增程式混合动力车充电口盖指示灯不工作

故障现象 一辆2022款问界M5增程式混合动力车&#xff0c;搭载1.5T发动机和发电机作为增程器&#xff0c;累计行驶里程约为3.6万km。该车因尾部受到碰撞进厂维修&#xff0c;维修后进行慢充&#xff0c;发现充电口盖指示灯不点亮&#xff08;图1&#xff09;&#xff0c;但仪表…

开放式运动耳机哪个品牌音质好用又实惠?五款2024高口碑产品精选力荐!

​开放式运动耳机在如今社会中已经迅速成为大家购买耳机的新趋势&#xff0c;深受喜欢听歌和热爱运动的人群欢迎。当大家谈到佩戴的稳固性时&#xff0c;开放式耳机都会收到一致好评。对于热爱运动的人士而言&#xff0c;高品质的开放式运动耳机无疑是理想之选。特别是在近年来…

要颜值有颜值,有性价比有性价比,华硕天选键、鼠组合分享

作为ROG产品的忠实粉丝&#xff0c;用过不少ROG 相关的产品&#xff0c;近期华硕天选TX98和天选MINI 鼠标的发布&#xff0c;独特配色令我眼前一亮。 华硕天选TX98键盘&#xff0c;作为新品&#xff0c;从看上的第一眼就觉得这款键盘是非常值得推荐。 它完美地诠释了潮玩新次元…

联想618收官:以69亿销售额勇夺15冠王

随着6月19日零点钟声的响起&#xff0c;今年的618年中大促正式落下帷幕。在这个备受瞩目的购物狂欢节里&#xff0c;联想凭借出色的产品表现和市场策略&#xff0c;再次展现了其强大的品牌实力和市场号召力。 数据显示&#xff0c;在今年618活动期间&#xff0c;联想全网销售额…

关于微信小程序(必看)

前言 为规范开发者的用户个人信息处理行为&#xff0c;保障用户的合法权益&#xff0c;自2023年9月15日起&#xff0c;对于涉及处理用户个人信息的小程序开发者&#xff0c;微信要求&#xff0c;仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则…

elasticsearch的安装和配置

单节点安装与部署 我们通过docker进行安装 1.docker的安装 如果以及安装了docker就可以跳过这个步骤。 首先更新yum: yum update安装docker: yum install docker查看docker的版本&#xff1a; docker -v此时我们的docker就安装成功了。 2.创建网络 我们还需要部署kiban…

计算机专业毕设-springboot论坛系统

1 项目介绍 基于SSM的论坛网站&#xff1a;后端 SpringBoot、Mybatis&#xff0c;前端thymeleaf&#xff0c;具体功能如下&#xff1a; 基本功能&#xff1a;登录注册、修改个人信息、修改密码、修改头像查看帖子列表&#xff1a;按热度排序、按更新时间排序、查看周榜月榜查…

SSMP整合案例

黑马程序员Spring Boot2 文章目录 1、创建项目1.1 新建项目1.2 整合 MyBatis Plus 2、创建表以及对应的实体类2.1 创建表2.2 创建实体类2.2.1 引入lombok&#xff0c;简化实体类开发2.2.2 开发实体类 3、数据层开发3.1 手动导入两个坐标3.2 配置数据源与MyBatisPlus对应的配置3…

创建第一个Springboot项目(环境准备、环境存在的问题、启动时存在的问题、启动的方式)

一、环境准备 专业版创建springboot&#xff0c;直接有一个选项可以选择 社区版&#xff0c;需要下载一个spring的插件 不要直接点 install 因为这个插件是付费的&#xff0c;直接点安装只有30天使用期限 在里面找免费版本的下载 然后安装 安装完成后&#xff0c;这个插件名会变…

记一次生产事故,来来回回搞了一个月

&#x1f345;我是小宋&#xff0c;关注我&#xff0c;带你轻松过面试 读源码。提升简历亮点&#xff08;14个demo&#xff09; &#x1f30f;号&#xff1a;tutou123com。拉你进专属群。 记一次生产事故&#xff0c;来来回回搞了一个月 背景 我们的主要业务是台湾省的一个小…

免费分享:2014-2021年OSM中国POI数据(附下载方法)

OpenStreetMap&#xff08;OSM&#xff09;是一个全球性的开源协作地图项目&#xff0c;允许任何人编辑和分享地理信息&#xff0c;旨在创建自由、准确且可广泛使用的世界地图。POI是“Point of Interest”的缩写&#xff0c;意为“兴趣点”。 OSM POI矢量数据是OpenStreetMap项…

通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器。通过对比三个算法可知&#xff0c;采用滑模控制算法&#xff0c;其具有最快的收敛性能&#xff0c;较强的鲁棒性&…

安装idea后配置的全局配置

1、打开IDEA应用&#xff1a;Customize→All settings...&#xff0c;如果启动IDEA后&#xff0c;默认打开的是之前的项目&#xff0c;可以关闭当前项目&#xff1a;File→Close Project&#xff0c;就退到全局配置界面了。 2、打开全局配置界面&#xff1a;Editor→File Encod…