当前位置: 首页 > news >正文

java 第19天

一.Lambda表达式

前提是:参数是函数式接口才可以书写Lambda表达式

函数式接口条件: 1.接口  2.只有一个抽象方法 

lambda表达式又称为匿名函数,允许匿名函数以参数的形式传入方法,简化代码

lambda表达式分为两部分()->{}

():要被覆盖的抽象方法的参数列表

如果参数只有一个的话()可以省略

{}:要被覆盖的抽象方法的方法体

如果方法体中只有一条语句{}和; 和 return省略

lambda中的return取决于抽象方法的返回类型

以下是关于lambda表达式的练习

(1.)TreeSet的一个构造方法可以使用 如下

TreeSet<>(Comparator接口 有一个抽象方法 compare(T x,T y)); 

		TreeSet<Integer> set = new TreeSet<>((x, old)->old - x);Collections.addAll(set,45,23,100,98);

(2).Collections.sort(list,Comparator) 也可以使用

		ArrayList<Integer> list=new ArrayList<>();Collections.addAll(list,45,23,100,98);//对list按照个位数升序/*Collections.sort(list,(n,old)->{return n%10-old%10;});*/Collections.sort(list,(n,old)->n%10-old%10);

(3)Collections.min(list,Comparator)  根据名字长度升序并且拿到第一个元素

Student stu=Collections.min(set,(n,old)->{return n.getName().length()-old.getName().length();});
Student stu=Collections.min(set,(n,old)-> n.getName().length()-old.getName().length());System.out.println(stu);

二.JDK8.0 新方法

(1.)对于list集合的

list.sort(Comparator<>); 可在比较器中设置比较规则 也可用lambda表达式 如下

其中里面的x.compareTo是泛型自身的比较规则

list.sort((x,y)->{return x.compareTo(y);});

 总结对list的排序

List 去排序
Collections . sort ( List )
Collections . sort ( List , Comparator )
list . sort ( Comparator )
TreeSet set = new TreeSet ( List 对象 );

 (2)Collection提供

forEach(Consumer):  

单值集合对象 . forEach (( x ) -> { 逻辑 });

引入了四大接口之一的-----------消费型接口 只会进去 不会出来返回类型void

接口:interface Consumer<泛型>()
唯一的抽象方法: void accept(泛型 x);
使用如下:
获取学生的年龄 并且加1
		set.forEach((stu)->{stu.setAge(stu.getAge()+1);});
	set.forEach((temp)->{temp.setScore(temp.getScore()+5);});

所谓的forEach中的小括号就是拿出集合中每一个数据罢了,如果是学生集合,对应的拿出的就是单独一个学生

removeIf(Predicate):删除集合里面所有符合条件的元素 调用如下

单值集合对象.removeIf(  (x)->{return 条件判断;})

四大接口之一---断言型接口

接口:interface Predicate<T >{}

唯一的抽象方法: boolean test(泛型 x);

练习removeIf,符合条件的就删除了

		//删除20岁的Jackerset.removeIf((temp)->{return temp.getName().equals("Jacker")&&temp.getAge()==20;});

(3).为map提供的方法

forEach(BiConsumer) 拿出集合中的每个对象进行某种操作

map.forEach((key,value)->{逻辑});

三.方法的引用

jdk8.0的新语法 对lambda表达式进行了进一步简化

之前

对象.实例方法()  

对象.静态方法()

类名.静态方法()

new 构造方法()

可以被一下替换

【对象::实例方法】

必须同时满足的两个条件
1 要被覆盖的抽象方法的参数列表和实例方法的参数列表一致
2 要被覆盖的抽象方法的返回类型和实例方法的返回类型一致
		// 抽象方法:void accept(Integer)// 实例方法:void println(Integer)list.forEach(System.out::println);// list.forEach((x)->System.out.println(x));

但是下面的不行

		Map<String,Integer> map = new HashMap<>();map.put("黄一亿",59);map.put("可可可",59);// 1 要被覆盖的抽象方法的参数列表和实例方法的参数列表一致
// 2 要被覆盖的抽象方法的返回类型和实例方法的返回类型一致// 抽象方法:void accept(String,Integer)// 实例方法:void println(String)// 1 X 2 √map.forEach((k,v)->System.out.println(k+v));

【类名::实例方法】

必须同时满足的三个条件
1 要被覆盖的抽象方法的参数列表比实例方法的参数列表多一个
2 要被覆盖的抽象方法的第一个参数可以调用实例方法
3 要被覆盖的抽象方法的返回类型和实例方法的返回类型一致
		//抽象方法: int compare(Student x,Student y)//实例方法; int compareTo(Student y)//11.抽象方法的参数比实例方法多一个//22.抽象方法的第一个 参数可以调用---升序可以 降序不OK//33.抽象方法的返回类型和实例方法的返回类型一致//1 √ 2 √ 3.√list.sort((x,y)->{return x.compareTo(y);});list.sort(Student::compareTo);

类名::静态方法

【构造方法::new

1 要被覆盖的抽象方法的参数列表和构造方法的参数列表一致
2 要被覆盖的抽象方法的返回类型和构造方法的返回类型一致
		Student stu = null;stu = Optional.ofNullable(stu) // Optional<Student>// 构造方法:Student Student()// 抽象方法:Student get()// 参数列表一致// 返回类型一致// 构造方法::new// .orElseGet(()->new Student());.orElseGet(Student::new);System.out.println(stu);

四.Optional 容器类

jdk8.0之后出现的致力于解决空指针问题
首先认识of(元素)---认识不掌握 不好用一点都不好
of( 元素 )
如果元素非空 直接返回包含元素的 Optional 对象
如果元素是 null 直接空指针
get()--------------------------------垃圾 不掌握
如果容器不是空容器 取出容器中的元素
如果容器是空容器 Optional.empty 直接报错【 NoSuchElementException
【结合 isPresent() 使用】
isPresent() 不是空容器 -true Optional.empty-false
ifPresent ( Consumer )
如果容器非空 会调用匿名函数
如果容器时 Optional . empty 不执行匿名函数

对于元素的放用ofNullable---以下掌握

ofNullable( 元素 )
如果元素非空 直接返回包含元素的 Optional 对象
如果元素为空 直接返回 Optional.empty 空元素
        String str = "hello";Optional<String> op = Optional.ofNullable(str);System.out.println(op); 打印 helloString str = null;Optional<String> op = Optional.ofNullable(str);System.out.println(op);  打印Optional.empty

搭配上取 

orElse(类型 x) x => 如果Optional.empty 使用x

如果容器非空 直接返回容器中的内容
使用如下:
如果str为空则为 no value,不为空则为原来值
str = Optional.ofNullable(str).orElse("No Value");

orElseGet(Suppler<T> ss)

orElseGet (() -> { return xxx ;})
如果容器非空 直接返回容器中的内容
如果 Optional . empty 使用 x 调用匿名函数【 lambda 的版本】
区别: orElseGet 惰性执行

四大接口之一----供给型接口 只提供 不接收

接口: interface Supplier< 泛型 >{}
唯一的抽象方法:泛型 get()
        String str = null;str = Optional.ofNullable(str)// Optional<String>// 抽象方法:String get().orElseGet(()->"No Value");System.out.println(str);

类名::构造方法

		Student stu = null;stu = Optional.ofNullable(stu) // Optional<Student>// 构造方法:Student Student()// 抽象方法:Student get()// 参数列表一致// 返回类型一致// 构造方法::new// .orElseGet(()->new Student());.orElseGet(Student::new);System.out.println(stu);

相关文章:

java 第19天

一.Lambda表达式 前提是&#xff1a;参数是函数式接口才可以书写Lambda表达式 函数式接口条件&#xff1a; 1.接口 2.只有一个抽象方法 lambda表达式又称为匿名函数&#xff0c;允许匿名函数以参数的形式传入方法&#xff0c;简化代码 lambda表达式分为两部分()->{} …...

什么是服务器?服务器与客户端的关系?本地方访问不了网址与服务器访问不了是什么意思?有何区别

服务器是一种高性能的计算机&#xff0c;它通过网络为其他计算机&#xff08;称为客户端&#xff09;提供服务。这些服务可以包括文件存储、打印服务、数据库服务或运行应用程序等。服务器通常具有强大的处理器、大量的内存和大容量的存储空间&#xff0c;以便能够处理多个客户…...

Spring(1)—Spring 框架:Java 开发者的春天

一、关于Spring 1.1 简介 Spring 框架是一个功能强大的开源框架&#xff0c;主要用于简化 Java 企业级应用的开发&#xff0c;由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立&#xff0c;并由Pivotal团队维护。它提供了全面的基础设施支持&#xff0c;使开发者…...

MT1401-MT1410 码题集 (c 语言详解)

目录 MT1401归并排序 MT1402堆排序 MT1403后3位排序 MT1404小大大小排序 MT1405小大大小排序II MT1406数字重排 MT1407插入 MT1408插入 MT1409旋转数组 MT1410逆时针旋转数组 MT1401归并排序 c 语言实现代码 #include <stdio.h>// merge two subarrays void merge(int a…...

React基础语法

1.React介绍 React由Meta公司开发&#xff0c;是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行&#xff0c;大厂…...

《Kadane‘s Algorithm专题:最大和连续子数组》

&#x1f680; 博主介绍&#xff1a;大家好&#xff0c;我是无休居士&#xff01;一枚任职于一线Top3互联网大厂的Java开发工程师&#xff01; &#x1f680; &#x1f31f; 在这里&#xff0c;你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人&#xff0c;我不仅热衷…...

Vue基础(5)

ref属性 在 Vue2 中&#xff0c;ref是一个特殊的属性&#xff0c;用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref&#xff0c;我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...

面对复杂的软件需求:5大关键策略!

面对软件需求来源和场景的复杂性&#xff0c;有效地管理和处理需求资料是确保项目成功的关键&#xff0c;能够提高需求理解的准确性&#xff0c;增强团队协作和沟通&#xff0c;降低项目风险&#xff0c;提高开发效率。反之&#xff0c;项目可能面临需求理解不准确、团队沟通不…...

使用Git进行版本控制的最佳实践

文章目录 Git简介基本概念仓库&#xff08;Repository&#xff09;提交&#xff08;Commit&#xff09;分支&#xff08;Branching&#xff09; 常用命令初始化仓库添加文件提交修改查看状态克隆仓库分支操作合并分支推送更改 最佳实践使用有意义的提交信息定期推送至远程仓库使…...

【入门1】顺序结构 - B2025 输出字符菱形

题目描述 用 * 构造一个对角线长 55 个字符&#xff0c;倾斜放置的菱形。 输入格式 没有输入要求。 输出格式 如样例所示。用 * 构成的菱形。 输入输出样例 输入 #1 输出 #1**** ********* <C> : #include<stdio.h>int main() {printf(" *\n ***\n**…...

C#DLL热加载|动态替换

我有一个项目 开始取数据和结束数据部分是一样的&#xff0c;但中间处理数据是根据客户需求来转换的 又要求增加一个客户数据转换 主程序是不能停下来的 所以这个项目转数据转换部分做成插件式 每个客户的数据转换都是一个项目 都是一个DLL 主程序里面定义好接口类或者抽象…...

数据库三大范式

目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 第一范式(1NF) 数据库表的每一列都是不可分割…...

【linux】fdisk磁盘分区管理

介绍 fdisk是一个磁盘分区管理工具&#xff0c;可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用&#xff0c;基础语法: fdisk /dev/sdd。进入交互窗口后&#xff0c;有一些选项&#xff0c;需要了解下&#xff1a; 选项含义n创建新分区p查看磁盘的分区情…...

asp.net core 入口 验证token,但有的接口要跳过验证

asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中&#xff0c;你可以使用中间件来验证token&#xff0c;并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子&#xff1a; 创建一个自定义属性来标记是否跳过验证&#xff1a; public clas…...

[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑

#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…...

从数据中台到数据飞轮:实现数据驱动的升级之路

从数据中台到数据飞轮&#xff1a;实现数据驱动的升级之路 随着数字化转型的推进&#xff0c;数据已经成为企业最重要的资产之一&#xff0c;企业普遍搭建了数据中台&#xff0c;用于整合、管理和共享数据&#xff1b;然而&#xff0c;近年来&#xff0c;数据中台的风潮逐渐减退…...

小记:SpringBoot中,@Alisa和@ApiModelProperty的区别

在 Spring Boot 中&#xff0c;Alias和ApiModelProperty 这两个注解用于不同的目的。 Alias Alias是一个用于定义别名的注解&#xff0c;通常用于 Bean 属性的别名功能&#xff0c;这样在使用某些框架&#xff08;如 JPA 或 Jackson&#xff09;时&#xff0c;可以将一个属性名…...

信捷 PLC C语言 定时器在FC中的使用

传统梯形图的定时器程序写起来简单&#xff0c;本文用C语言写定时器的使用。 定时器在c语言中使用&#xff0c;和普通梯形图中使用的区别之一是既有外部条件&#xff0c;也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…...

k8s常用对象简介

Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是一组&#xff08;一个或多个&#xff09; 容器&#xff1b; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置&#xff08;colocated&#xff09;的并且一同调度&…...

【Kaggle | Pandas】练习2:索引,选择和分配

文章目录 数据总表1、读取列2、读取某列的第几行的值3、第一行数据4、读取列中前10个值5、读取索引标签为1 、 2 、 3 、 5和8的记录6、包含索引标签为0 、1 、10和100的记录的country 、province 、 region_1和region_2列7、 前 100 条记录的country和variety列8、包含Italy葡…...

【flask】 flask redis的使用

目的&#xff1a;如何使用在flask web项目中连接redis&#xff0c;并简单的使用 使用的库包&#xff1a;flask-redis pip install falsk-redis下面的写法是对项目代码进行模块化拆分的写法&#xff0c;在app.py中只进行对象的初始化等操作&#xff1b;exts.py中创建对象&…...

【Unity基础】Unity中的特殊文件夹详解

在Unity项目中&#xff0c;通常可以根据需要创建任意名称的文件夹来组织项目内容&#xff0c;但有一些特定的文件夹名称会触发Unity对其中资源和脚本的特殊处理。这篇文章将详细介绍这些特殊文件夹&#xff0c;帮助开发者在项目中合理地使用它们。 1. Assets 文件夹 Assets文…...

矩阵蠕虫,陈欣出品

第一章 陈欣是一名资深的软件工程师&#xff0c;专门从事分布式系统和人工智能的研究。她的最新项目叫做“MatrixWorm”&#xff0c;目标是创建一个简单而强大的远程控制系统。在这个系统中&#xff0c;控制端可以通过文字命令&#xff0c;让被控制端利用大语言模型的能力来理…...

python 爬虫 入门 五、抓取图片、视频

目录 一、图片、音频 二、下载视频&#xff1a; 一、图片、音频 抓取图片的手法在上一篇python 爬虫 入门 四、线程&#xff0c;进程&#xff0c;协程-CSDN博客里面其实有&#xff0c;就是文章中的图片部分&#xff0c;在那一篇文章&#xff0c;初始代码的28&#xff0c;29行…...

ubantu 编译安装ceph 18.2.4

下载ceph代码 git clone https://github.com/ceph/ceph.git #切换tag git checkout v18.2.4 -b v18.2.4 #下载子模块 会有报错重新执行即可 git submodule update --init --recursive安装ceph所需要的依赖 #curl命令安装 sudo apt install curl#安装ceph依赖 ./install-deps.…...

哈希封装“unordered_set·map“

本文与对setmap的封装高度相似&#xff0c;可以参考我之前的对setmap封装的文章&#xff1a; 链接&#xff1a;&#xff08;没看过的话就点点我吧&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&am…...

Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【MobileNetV2实现实时口罩检测tensorflow】 2.【卫星图像道路检测DeepLabV3P…...

从JDK 17 到 JDK 21:Java 新特性

JDK17 密封类 概念&#xff1a;密封类允许开发者控制哪些类可以继承或实现特定的类或接口。通过这种方式&#xff0c;密封类为类的继承提供了更高的安全性和可维护性。 定义&#xff1a;使用sealed代表该类为密封类&#xff0c;并用permits限制哪些类可以继承。 public sea…...

【计算机网络 - 基础问题】每日 3 题(五十七)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…...

第十二章 章节练习created的应用

目录 一、引言 二、运行效果图 ​三、完整代码 一、引言 构建一个新闻的页面&#xff0c;页面在响应式数据准备好之后&#xff08;即created&#xff09;&#xff0c;就向后台接口请求获取新闻数据列表&#xff0c;然后赋值给Vue实例中的list列表&#xff0c;这个请求逻辑我…...

如何建设一个文件分享网站/每日新闻摘抄10条

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《嵌入式Linux开发实战...

仪征市企业网站建设公司/国外seo工具

1、良好的开端是成功的一半。抖音账号前5个作品的质量&#xff0c;决定了这个账号的初始权重。更关键的是&#xff0c;新账号发布的视频作品更容易得到系统的推荐。抖音遵循去中心化原则。每个人都可以成为中心&#xff0c;任何中心都不是永久的。具体来说&#xff0c;推荐的短…...

站长论坛 激活网站/免费推广网站2024

基本概念&#xff1a; 1、完全二叉树&#xff1a;若二叉树的深度为h&#xff0c;则除第h层外&#xff0c;其他层的结点全部达到最大值&#xff0c;且第h层的所有结点都集中在左子树。 2、满二叉树&#xff1a;满二叉树是一种特殊的的完全二叉树&#xff0c;所有层的结点都是最…...

家装公司排名前十强/直通车关键词优化口诀

最近给客户搞了一个将非智能电视机内置一个带网口的dongle板子的项目。pcb已经回来&#xff0c;这两天准备贴片。用瑞芯微的rk3128搞的&#xff0c;详细的产品、板子外形。等板子贴片回来了&#xff0c;再补充。 2015-1-25 已经贴出来&#xff0c;跑的非常不错。体积大小42*9…...

自己做网站上市/百度seo效果怎么样

8月14日&#xff0c;京东商城CEO刘强东微博“叫号”苏宁&#xff0c;声称“京东大家电三年内零毛利”“京东大家电价格绝对比国美苏宁门店低10%……”此举引来苏宁易购执行副总裁李斌第一时间强势回应&#xff0c;同时&#xff0c;没有被京东点名的国美电器也加入了战团。至此&…...

做户外运动的网站/最新的网络营销方式

有价值的git命令的博客: http://blog.csdn.net/ithomer/article/details/7529022 gitlab的使用方法&#xff1a; git命令&#xff1a; 1. 如果你是第一次使用git&#xff0c;那么先安装git吧&#xff1a; sudo apt-get install git2. 当安装完了 git 后&#xff0c;初始化…...