6. 3 lambda表达式

6.3 lambda表达式

指定时间间隔完成工作,该工作放在了ActionListener中的action performed

方法中;work类继承上述类,构造work类实例

定制比较器完成排序,定义一个长度比较类,再传给sort;实现基于长度排序,而非默认的字典或字符串排序。

Class LengthComparator implements Comparator<String>{};

Array.sort(strings, new LengthComparator);

 

共性:worker类、LengthComparator类传给timer,sort方法。传递的是对象,不是代码段。通过lambda处理代码块。

 

lambda表达式是一个代码块,及必须传入代码的变量规范。希腊字母(入)

第一个lambda表达式:

(String.first,String.second)->first.length()-second.length();

没有参数也要提供括号();

->后面的代码块过多,用{};

 

如果可以推导出类型,可以不用写类型,Comparator<String> comp = (first, second) -> first.length()-second.length(),编译器可以自动推导出参数为字符串,lambda表达式赋给一个字符串比较器;

 

方法只有一个参数,可推导出参数,可不用写小括号(); 

ActionListener listener = event -> System.out.println(“the time is” + new Date());

 

无需指定lambda表达式返回类型,上下文推导得出。(String.first,String.second)->first.length()-second.length();

 

只返回一些分支,另外一些分支不返回,lambda中不合法。


 

函数式接口必须只有一个抽象方法。

 

Arrays.sort()方法第二个参数需要一个Comparator实例,只有一个方法的接口,可提供一个lambda表达式。

 

lambda转换为接口,Timer t = new timer(1000, event -> System.out.println(“the time is” + new Date())).

 

java.util.function包中的BiFunction<T, U, R>描述类参数类型T,U和返回类型R的函数。

 

ava.util.function中有一个有用的接口predicate,中有一个test(T t)方法,判断是否相等,返回布尔值。

 

ArrayList类的removIf方法参数为Predicate,该接口专门传递lambda表达式。将数组列表中的所有null删除,list.removeIf(e -> e==null);


 

方法引用,表达式System.out::println是一个方法引用,等价于x->System.out.println(x);

::操作符分割方法名与对象或类名,

 

supper:: greet();调用父类的greet方法。


 

构造器引用,Person::new 是person构造器的一个引用,通过上下文确定是哪一个构造器。

数组类型建立构造器引用,int[]::new,等价于x->new int[x];

 

lambda表达式,只能引用值不会改变的变量。不能在lambda表达式中对捕获的外部变量进行运算。循环体中的变量,表达式代码块也不能引用。

不能有两个同名的局部变量。

lambda表达式中的this,指创建表达式方法的this参数,对象类。

 

使用lambda表达式的重点是延迟执行。延迟执行的原因是:1.在一个单独的线程中运行代码;2.多次运行代码;3.算法的适当位置运行代码;4.发生某种情况时运行代码;5.必要时运行代码。

 

重复一个动作n次的repeat方法,接受这个方法中的lambda表达式,选择一个函数式接口,可用runnable接口。

常用函数式接口,基本类型的函数式接口。

@FuctionalInterface 注解用于指示一个接口只能定义一个抽象方法

 

按名字对Person对象排序

Array.sort(people, Comparator.comparing(Person::getName));

如姓相同,就比较名。

Array.sort(people, Comparator.comparing(Person::getLastName).thenComparing(Person::getFirstName);

 

 

 

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

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

相关文章

Web地图开发,在vue3中引入高德地图API

在vue3中引入高德地图API要实现的功能 设置地图的显示样式实现点击地图添加标记、点击地图获取详细地址和经纬度输入框搜索获取相关地区提示&#xff08;下拉框&#xff0c;选中后进行标记&#xff0c;视角移动到相对位置&#xff09;输入框输入内容&#xff0c;回车获取详细地…

架构设计系列之前端架构和后端架构的区别和联系

前端架构和后端架构都是软件系统中最关键的架构层&#xff0c;负责处理不同方面的任务和逻辑&#xff0c;两者之间是存在一些区别和联系的&#xff0c;我会从以下几个方面来阐述&#xff1a; 一、定位和职责 前端架构 主要关注用户界面和用户体验&#xff0c;负责处理用户与…

打造中国人自己的GPTs,百度灵境矩阵升级为智能体平台

12月18日&#xff0c;百度「灵境矩阵」平台全新升级为「文心大模型智能体平台」。灵境矩阵基于文心大模型&#xff0c;为开发者提供多样化的开发方式&#xff0c;支持广大开发者根据自身行业领域、应用场景&#xff0c;选取多样化的开发方式&#xff0c;打造大模型时代的原生应…

关于我对归纳偏置(inductive bias)的概念和应用的详细总结

归纳偏置&#xff08;inductive bias&#xff09; 1.归纳偏置&#xff08;inductive bias&#xff09;的概念2.归纳偏置&#xff08;inductive bias&#xff09;的应用 1.归纳偏置&#xff08;inductive bias&#xff09;的概念 归纳偏置&#xff08;inductive bias&#xff0…

贪吃蛇(二)绘制地图

绘制地图主要是考察基础的循环和分支控制&#xff0c;视频没看完&#xff0c;自己写了一下。 绘制一个基础地图 #include"curses.h" void cursesinit() {initscr();keypad(stdscr,1); }void mapinit() {int row;int col;for(row 0;row < 20;row){if(row 0 || …

如何在 FastAPI 中设置定时任务:完全指南

Web 应用程序开发中&#xff0c;及时高效处理常规任务至关重要&#xff0c;包括定时收集数据或管理任务计划。针对强大且性能卓越的 FastAPI 框架&#xff0c;我们可以通过几种策略来管理这些必要的定时任务。 实现 FastAPI 中的定时任务 本指南将探讨在 FastAPI 环境中管理定…

工业6轴机械臂运动学逆解(解析解)

工业6轴机械臂运动学逆解&#xff08;解析解&#xff09; 通常工业机械臂采用6旋转轴串连的形式&#xff0c;保证了灵活性&#xff0c;但为其运动学逆解&#xff08;即已知机械臂末端的位姿 P P P&#xff0c;求机械臂各个旋转轴的旋转角&#xff09;带来了较大的困难&#xff…

面试题总结(十五)【ARMstm32】【华清远见西安中心】

ARM Cortex-M,Cortex-R,Cortex-A的区别和差异是什么&#xff1f; ARM Cortex-M&#xff0c;Cortex-R和Cortex-A是ARM架构下的不同处理器系列&#xff0c;针对不同的应用领域和需求进行了优化和设计。它们之间的区别和差异主要体现在以下几个方面&#xff1a; 1. 应用领域&#…

倒计数器:CountDownLatch

CountDownLatch 是 Java 中用于多线程编程的一个同步工具。 它允许一个或多个线程等待其他线程执行完特定操作后再继续执行。 CountDownLatch 通过一个计数器来实现&#xff0c; 该计数器初始化为一个正整数&#xff0c;每当一个线程完成了指定操作&#xff0c;计数器就会减一。…

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 总结 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库&#xff0c;专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式…

【深度学习】序列生成模型(六):评价方法计算实例:计算ROUGE-N得分【理论到程序】

文章目录 一、BLEU-N得分&#xff08;Bilingual Evaluation Understudy&#xff09;二、ROUGE-N得分&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09;1. 定义2. 计算N1N2 3. 程序 给定一个生成序列“The cat sat on the mat”和两个参考序列“The c…

JavaSE 搜索树

目录 1 概念2 操作2.1 查找2.2 插入2.3 删除 3 性能分析4 和 java 类集的关系 1 概念 二叉搜索树 又称 二叉排序树&#xff0c;它是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b;若它…

js使用promise对象达到promise waiting

async getInfoFormName() {return new Promise((resolve, reject) > {let infoForm: string;if (this.showBox "basic-info-box") {infoForm "basicInfoForm";} else {infoForm "extendInfoForm";}resolve(infoForm);});} 使用这个Priomi…

[Java][File]文件的创建与删除

对一个File类型的对象而言 1.创建一个新的空的文件 createNewFile 2.制作单级文件夹 mkdir 3.制作多级文件夹 mkdirs 4.删除文件、空文件夹 delete 注意&#xff1a;这个方法不会走回收站的 import java.io.File; import java.io.IOException;public class Main{public static …

Logistic Regression逻辑线性回归(基于diabetes数据集)

目录 介绍&#xff1a; 1、Confusion Matrix&#xff1a; 2、ROC&#xff08;Receiver Operating Characteristic&#xff09; 一、数据处理 二、建模 三、 confusion_matrix 四、 ROC&#xff08;Receiver Operating Characteristic&#xff09; 介绍&#xff1a; L…

class085 数位dp-下【算法】

class085 数位dp-下【算法】 code1 P2657 [SCOI2009] windy 数 // windy数 // 不含前导零且相邻两个数字之差至少为2的正整数被称为windy数 // windy想知道[a,b]范围上总共有多少个windy数 // 测试链接 : https://www.luogu.com.cn/problem/P2657 // 请同学们务必参考如下代码…

好习惯的重要性

养成习惯的五个步骤 提高认识 引导孩子对养成某个习惯产生兴趣明确规范 让孩子对养成某个好习惯的具体规范持久训练 坚持不懈的行为规范&#xff0c;让孩子由被动到主动再到自动及时评估 让孩子在成功的体验中养成良好习惯形成环境 让家庭生活和学校环境乃至社会风气成为孩子养…

7款创意性前端源码特效资源分享(附在线预览效果)

分享7款非常不错炫酷的前端特效源码 其中包含css动画特效、js原生特效、svg特效等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 CSS绘制iPhone 14带动态岛 纯CSS绘制iPhone 14带动态岛模型 运行初始化时还附带出场动画 …

微信小程序动态导航栏(uniapp + vant)

本文使用到vant的van-tabbar组件来实现 一、uniapp整合vant ui vant小程序版本:https://vant-contrib.gitee.io/vant-weapp/#/home 注:vant并没有uniapp的版本,所以此处是引入小程序版本的ui 1. 下载vant编译后代码 https://github.com/youzan/vant-weapp/tree/dev/dist 2…

vue中对keep-alive的理解

vue中对keep-alive的理解 介绍使用方法参数解析使用示例 介绍 keep-alive是 Vue 内置的一个组件&#xff0c;可以使被包含的组件保留状态&#xff0c;或避免重新渲染。它有两个属性: include(包含的组件缓存) 与 exclude(排除的组件不缓存&#xff0c;优先级大于include) 。 使…