专业网站建设制/关键词自动优化
目录
♫什么是Lambda表达式
♫Lambda表达式的语法
♫函数式接口
♫Lambda表达式的使用
♫变量捕获
♫ Lambda表达式在集合中的使用
♪Collection的foreach():
♪List的sort():
♪Map的foreach()
♫什么是Lambda表达式
Lambda 表达式是 Java SE 8中一个重要的新特性,它是一种匿名函数,常作为函数式编程的一部分,用于向函数传递行为作为参数,或者用于将行为作为返回值返回。 Lambda表达式提供了一个正常的参数列表和一个使用这些参数的主体(body, 可以是一个表达式或一个代码块)。
♫Lambda表达式的语法
基本语法 : (parameters) ->{ 方法体 }①. paramaters :类似方法中的形参列表,这里的参数是函数式接口里的参数。(参数类型可以明确的声明 ,也可不声明而由 JVM 隐含的推断;当只有一个推断类型时可以省略掉圆括号)②. -> :可理解为 “ 被用于 ” 的意思③. 方法体 :可以是表达式也可以代码块,是函数式接口里方法的实现。(代码块可返回一个值或者什么都不返回,这里的代码块块等同于方法的方法体;如果是表达式,也可以返回一个值或者什么都不反回)//1. 不需要参数,返回值为2 ()->2; //2. 接收一个参数(数字类型),返回其2倍的值 x->2*x; //3. 接受2个参数(数字),并返回他们的和 (x,y)->x+y; //4. 接收2个int型整数,返回他们的乘积 (int x,int y)->x*y; //5. 接受一个string对象,并在控制台打印,不返回任何值 (String s)->System.out.print(s);
注:①.->前只有一个参数,()可以省略;②.->后只有一条语句,{}可以省略;③.->后只有return语句,return可以去掉;④.()里 的参数类型可以省略,如果要省略,每个参数的类型都要省略。
♫函数式接口
要了解 Lambda 表达式 , 还需要先了解什么是函数式接口。函数式接口是一种特殊的接口,它的接口里有且只有一个抽象方法:@FunctionalInterface interface A {//抽象方法有且只有一个public void fun();//可以有被default修饰的具体方法default void fun2() {System.out.println("JDK1.8新特性,default默认方法可以有具体的实现");} }
注:
①.如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口。
②.可以在接口上方加上@FunctionalInterface注释,让编译器帮助我们检查该接口是不是一个函数式接口。
③.JDK1.8之后,函数式接口里允许存在default方法修饰的具体方法。
♫Lambda表达式的使用
我们先定义几个函数式接口:
//无返回值无参数 @FunctionalInterface interface NoParameterNoReturn {void test(); } //无返回值一个参数 @FunctionalInterface interface OneParameterNoReturn {void test(int a); } //无返回值多个参数 @FunctionalInterface interface MoreParameterNoReturn {void test(int a,int b); }//有返回值无参数 @FunctionalInterface interface NoParameterReturn {int test(); } //有返回值一个参数 @FunctionalInterface interface OneParameterReturn {int test(int a); }//有返回值多参数 @FunctionalInterface interface MoreParameterReturn {int test(int a,int b); }
下面我们通过Lambda表达式对上面几个函数式接口进行实例化操作:
public class Test {public static void main(String[]args) {//无参数无返回值NoParameterNoReturn noParameterNoReturn = () -> {System.out.println("无参数无返回值");};noParameterNoReturn.test();//一个参数无返回值OneParameterNoReturn oneParameterNoReturn = (int a) -> {System.out.println("一个参数无返回值:" + a);};oneParameterNoReturn.test(10);//多个参数无返回值MoreParameterNoReturn moreParameterNoReturn = (int a, int b) -> {System.out.println("多个参数无返回值:" + a + "" + b);};moreParameterNoReturn.test(20, 30);//有返回值无参数NoParameterReturn noParameterReturn = () -> {System.out.println("有返回值无参数");return 40;};int ret = noParameterReturn.test();System.out.println(ret);//有返回值有一个参数OneParameterReturn oneParameterReturn = (int a) -> {System.out.println("有返回值有一个参数");return a;};ret = oneParameterReturn.test(50);System.out.println(ret);//有返回值多个参数MoreParameterReturn moreParameterReturn = (int a, int b) -> {System.out.println("有返回值多个参数");return a + b;};ret = moreParameterReturn.test(60, 70);System.out.println(ret);} }
注:Lambda表达式只能应用于函数式接口。
♫变量捕获
变量捕获是指将外部类中的变量复制到内部类中,这样内部类就可以在外部类的作用域之外访问这些变量。
匿名内部类和lambda表达式都存在变量捕获:
@FunctionalInterface interface B {void fun(); } public class Test {public static void main(String[] args) {int a = 10;//匿名内部类:B b1 = new B() {@Overridepublic void fun() {System.out.println("匿名内部类a=" + a);}};b1.fun();//Lambda表达式:B b2 = () -> {System.out.println("Lambda表达式a=" + a);};b2.fun();} }
运行结果如下:
需要注意的是:被捕获的变量要么是被final修饰,要么是隐式 final 的(在使用之前没有被修改):
@FunctionalInterface interface B {void fun(); } public class Test {public static void main(String[] args) {int a = 10;//a = 11;//①//匿名内部类:B b1 = new B() {@Overridepublic void fun() {//a = 11;//②System.out.println("匿名内部类a=" + a);}};b1.fun();//a = 11;//③} }
在①、②、③任意一处去掉注释都会报错:![]()
♫ Lambda表达式在集合中的使用
为了能够让 Lambda 和 Java 的集合类集更好的一起使用,Java集合中新增了部分接口,以便与 Lambda 表达式对接:
接口 新增方法 Collection removeIf()、spliterator()、stream()、parallelStream()、forEach() List replaceAll()、sort()Map getOrDefault()、forEach()、replaceAll()、putIfAbsent()、remove()、replace()、computeIfAbsent()、computeIfPresent()、compute()、merge()♪Collection的foreach():
foreach()的部分源码:
foreach()的应用:
public class Test {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(3);list.add(2);list.forEach(s-> System.out.print(s+" "));} }
运行结果:
♪List的sort():
sort()的部分源码:
sort()的应用:
class Test2 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(3);list.add(2);list.sort((str1,str2)->str1-str2);System.out.println(list);}}
运行结果:
♪Map的foreach()
foreach()的部分源码:
foreach()的应用:
class Test3 {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();map.put("a", 1);map.put("b", 2);map.put("c",3);map.forEach((k,v)->System.out.println(k+"="+v));} }
运行结果:
相关文章:

【Java SE】Lambda表达式
目录 ♫什么是Lambda表达式 ♫Lambda表达式的语法 ♫函数式接口 ♫Lambda表达式的使用 ♫变量捕获 ♫ Lambda表达式在集合中的使用 ♪Collection的foreach(): ♪List的sort(): ♪Map的foreach() ♫什么是Lambda表达式 Lambda 表达式是 Java SE 8中一个…...

Kafka-UI
有多款kafka管理应用,目前选择的是github上star最多的UI for Apache Kafka。 关于 To run UI for Apache Kafka, you can use either a pre-built Docker image or build it (or a jar file) yourself. UI for Apache Kafka is a versatile, fast, and lightweight…...

Unity 制作登录功能02-创建和链接数据库(SQlite)
国际惯例:先看效果 1.SQlite是一种嵌入型数据库 在Unity开发游戏时使用SQLite有多种原因,以下是其中一些主要原因: 嵌入式数据库:SQLite是一个嵌入式数据库引擎,这意味着它不需要单独的服务器进程。这使得使用SQLite非…...

算法 岛屿数量-(递归回溯)
牛客网 BM57. 二维矩阵,值为1表示岛屿,0表示海洋,求海洋中岛屿数量。 解题思路: 遍历二维数组,值为1增加岛屿数量记数,同时对此位置进行单独递归遍历上下左右4个方向,将数组坐标范围内同时值为1的元素置…...

安卓恶意应用识别(番外篇)(Python并行(多线程or多进程)执行cmd)
前言 本人为了批量反编译,不得不涉及到批量执行,之前没有彻底理解有关于多线程的概念和python方法,现在只能一步一步尝试,并且实践,写本文以记录。 1. 进程与线程 1.1 什么是进程? 1.1.1 概念 进程是一…...

基于大语言模型扬长避短架构服务
秘诀: 扬泛化之长, 避时延之短...

初识网络编程
一、概述 地球村:亦称世界村,是通过电子媒介将世界紧密联系起来的形象表达,是信息网络时代的集中体现 TCP和UDP: TCP:打电话 -->连接 -->接了 -->通话 UDP:发送完即可 -->接收 计算机网络&a…...

轻松使用androidstudio交叉编译libredwg库
对于安卓或嵌入式开发者而言,交叉编译是再熟悉不过的操作了,可是对于一些刚入门或初级开发者经常会遇到这样的问题:如何交叉编译C++库来生成安卓下的so库呢? 最近有一些粉丝找到我求救,那么我最近刚好有空大致研究了下,帮他们成功编译了其中一个libredwg的C++库,这篇文章…...

【C++杂货铺】一颗具有搜索功能的二叉树
文章目录 一、二叉搜索树概念二、二叉搜索树的操作2.1 二叉搜索树的查找2.2 二叉搜索树的插入2.3 二叉搜索树的删除 三、二叉搜索树的实现3.1 BinarySearchTreeNode(结点类)3.2 BinarySearchTree(二叉搜索树类)3.2.1 框架3.2.2 in…...

uni-app使用vue3,在元素或组件实例上添加ref,用this.$refs显示undefined
项目中引用了一个UI组件库,在表单上添加了ref属性,方便提交时验证。触发提交方法时显示不存在这个方法或this.$refs为undefined。 <u--form labelPosition"left" :model"userInfo" :rules"rules" ref"loginForm&…...

蜂蜜配送销售商城小程序的作用是什么
蜂蜜是农产品中重要的一个类目,其受众之广市场需求量大,但由于非人人必需品,因此传统线下门店经营也面临着痛点,线上入驻平台也有很多限制难以打造自有品牌,无法管理销售商品及会员、营销等,缺少自营渠道&a…...

大数据Flink(八十四):SQL语法的DML:窗口聚合
文章目录 SQL语法的DML:窗口聚合 一、滚动窗口(TUMBLE)...

系统集成|第十八章(笔记)
目录 第十八章 安全管理18.1 信息安全管理18.2 信息系统安全18.3 物理安全管理18.4 人员安全管理18.5 应用该系统安全管理18.6 信息安全等级保护18.7 拓展 上篇:第十七章、变更管理 下篇:第十九章、风险管理 第十八章 安全管理 18.1 信息安全管理 信息安…...

480万商品,如何架构商品治理平台?
说在前面 在40岁老架构师 尼恩的读者交流群(50)中,很多小伙伴拿高薪,完成架构的升级,进入架构师赛道,打开薪酬天花板。 最近有小伙伴拿到了一线互联网企业如京东、网易、微博、阿里、汽车之家、极兔、有赞、希音、百度、滴滴的架…...

【C++入门指南】C如何过渡到C++?祖师爷究竟对C++做了什么?
【C入门指南】C如何过渡到C?祖师爷究竟对C做了什么? 前言一、命名空间1.1 命名空间的定义1.2 命名空间使用 二、C输入、输出2.1 std命名空间的使用惯例 三、缺省参数3.1 缺省参数的定义3.2 缺省参数分类 四、函数重载4.1 函数重载概念4.2 C支持函数重载的…...

简易磁盘自动监控服务
本文旨在利用crontab定时任务(脚本请参考附件)来监控单个服务节点上所有磁盘使用情况,一旦超过既定阈值则会通过邮件形式告警相关利益人及时介入处理。 1. 开启SMTP服务 为了能够成功接收告警信息,需要邮件接收客户都安开启SMTP服务。简要流程请参考下…...

【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
1 mpl_toolkits.mplot3d 功能介绍 mpl_toolkits.mplot3d 是 Matplotlib 库中的一个子模块,用于绘制和可视化三维图形,包括三维散点图、曲面图、线图等。它提供了丰富的功能来创建和定制三维图形。以下是 mpl_toolkits.mplot3d 的主要功能和功能简介&am…...

十六,镜面IBL--预滤波环境贴图
又到了开心的公式时刻了。 先看看渲染方程 现在关注第二部分,镜面反射。 其中 这里很棘手,与输入wi和输出w0都有关系,所以,再近似 其中第一部分,就是预滤波环境贴图,形式上与前面的辐照度图很相似&#…...

信息安全:恶意代码防范技术原理.
信息安全:恶意代码防范技术原理. 恶意代码的英文是 Malicious Code, 它是一种违背目标系统安全策略的程序代码,会造成目标系统信息泄露、资源滥用,破坏系统的完整性及可用性。 目录: 恶意代码概述: (1&a…...

开源媒体浏览器Kyoo
什么是 Kyoo ? Kyoo 是一款开源媒体浏览器,可让您流式传输电影、电视节目或动漫。它是 Plex、Emby 或 Jellyfin 的替代品。Kyoo 是从头开始创建的,它不是一个分叉。一切都将永远是免费和开源的。 软件特性: 管理您的电影、电视剧…...

人脸解锁设备时出现相机报错
(1)背景分析 这是项目当中实际遇到的问题,如下代码仅用作分析和记录。 现在问题的现象是:刚亮屏大概在2s以内对着人脸一般是能解锁的,但是超过2s之后在对着人脸,是无法解锁成功的。 (2&#…...

【广州华锐互动】利用VR开展工业事故应急救援演练,确保救援行动的可靠性和有效性
在工业生产中,事故的突发性与不可预测性常常带来巨大的损失。传统的应急演练方式往往存在场地限制、成本高、效果难以衡量等问题。然而,随着虚拟现实(VR)技术的快速发展,VR工业事故应急救援演练应运而生,为…...

还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(二)
续接上文:还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(一) 1.数据治理工程师 工作职责 数据治理工程师的工作职责主要包括以下几个方面: 1. 数据管理策略制定:制定和实施数据管理策略&#…...

常见应用层协议
一.HTTP(超文本传输协议) HTTP 和 HTTPS 二.FTP(文件传输协议) 三.SMTP(简单邮件传输协议) 四.POP3(邮局协议版本3) 五.IMAP(互联网消息访问协议) 六.DNS&am…...

解决docker容器无法关闭的问题
一般正常关闭: docker stop 容器ID解决方法 方法1:强制停止docker kill 容器ID方法2:直接重启dockersudo service docker stop方法3:直接删除容器,重新创建docker rm -f my_container...

2023-09-27 LeetCode每日一题(餐厅过滤器)
2023-09-27每日一题 一、题目编号 1333. 餐厅过滤器二、题目链接 点击跳转到题目位置 三、题目描述 给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息…...

梯度下降法(SGD)原理
目录 梯度下降法(SGD)原理:求偏导 1. 梯度(在数学上的定义) 2. 梯度下降法迭代步骤 BGD批量梯度下降算法 BGD、SGD在工程选择上的tricks 梯度下降法(SGD)原理:求偏导 1. 梯度(在数学上的定义) 表示某一函数在该点处的方向导数沿着该方向取得最大值…...

QQ表情包存储位置解析
一些常见的设备和系统的QQ表情包存储位置: Windows系统: 路径:C:\Users[用户名]\Documents\Tencent Files[QQ号码]\Image\Image\CustomFace 在这个文件夹中,您可以找到所有自定义的QQ表情包。 Android系统: 路径&am…...

软件架构的演化和维护
软件架构的演化和维护 定义 定义 顶不住了,刷题去了,不搞这个了,想吐。。。...

C语言数组和指针笔试题(四)(一定要看)
目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个人主页 🥸🥸🥸C语言 🐿️…...