Java 8 的那些常见写法
前言
现在Java已经发展到Java19版本了,由于Java后面一些版本,就开始商用收费了,所以目前绝大多数公司的JDK版本都是采用的之前稳定且免费的1.8版本,也就是Java8,这个版本已经能满足几乎所有业务的需求开发了,下面我列举几个Java8中的一些常见写法。
1. 循环遍历
示例:循环打印集合对象信息
常规写法:
for (User user : users) {System.out.println(user.toString());
}
Java 8 写法:
users.forEach(o -> System.out.println(o.toString()));
2. 函数式接口:匿名内部类
示例:多线程异步打印
常规写法:
new Thread(new Runnable() {@Overridepublic void run() {System.out.println("hello world");}
}).start();
Java 8 写法:
new Thread(() -> System.out.println("hello world")).start();
3. 排序(升序版:从小到大)
示例:用户年龄小到大排序
常规写法:
Collections.sort(userList, new Comparator<User>() {@Overridepublic int compare(User o1, User o2) {return o1.getAge() - o2.getAge();}
});
Java 8 写法1:基础版
Collections.sort(userList, (o1, o2) -> o1.getAge() - o2.getAge());
Java 8 写法2:进阶版
Collections.sort(userList, Comparator.comparingInt(User::getAge));
Java 8 写法3:终极版
userList.sort(Comparator.comparingInt(User::getAge));
【注】数值比较可以直接相减排序,非数值比较请用 compareTo() 方法。
【如】 return o1.getName().compareTo(o2.getName());
4. 排序(降序版:从大到小)
示例:用户年龄小到大排序
常规写法:
Collections.sort(userList, new Comparator<User>() {@Overridepublic int compare(User o1, User o2) {return o2.getAge() - o1.getAge();}
});
Java 8 写法1:基础版
Collections.sort(userList, (o1, o2) -> o2.getAge() - o1.getAge());
Java 8 写法2:终极版
userList.sort((o1, o2) -> o2.getAge() - o1.getAge());
5. 过滤
示例:过滤年龄小于18的用户
常规写法:
List<User> users = new ArrayList<>();
for(User u: userList){if (u.getAge() < 18) {users.add(u);}
}
Java 8 写法:
List<User> users = userList.stream().filter(u -> u.getAge() < 18).collect(Collectors.toList());
6. 求和
示例:求所有用户的年龄总和
常规写法:
int sum = 0;
for(User u: userList){sum += u.getAge();
}
System.out.println("年龄总和 : " + sum);
Java 8 写法:
int sum = userList.stream().mapToInt(User::getAge).sum();
System.out.println("年龄总和 : " + sum);
7. 求最大值
示例:求所有用户中最大年龄
常规写法:
int maxAge = 0;
for(User u: userList){if (u.getAge() > maxAge) {maxAge = u.getAge();}
}
System.out.println("最大年龄 : " + maxAge);
Java 8 写法:
int maxAge = userList.stream().mapToInt(User::getAge).max().getAsInt();
System.out.println("最大年龄 : " + maxAge);
8. 求最小值
示例:求所有用户中最小年龄
常规写法:
int maxAge = Integer.MAX_VALUE;
for(User u: userList){if (u.getAge() < maxAge) {maxAge = u.getAge();}
}
System.out.println("最小年龄 : " + maxAge);
Java 8 写法:
int minAge = userList.stream().mapToInt(User::getAge).min().getAsInt();
System.out.println("最小年龄 : " + minAge);
9. 求平均值
示例:求所有用户平均年龄
常规写法:
int sum = 0;
int size = userList.size();
for(User u: userList){sum += u.getAge();
}
double aveAge = (double) sum / size;
System.out.println("平均年龄 : " + aveAge);
Java 8 写法:
double aveAge = userList.stream().mapToInt(User::getAge).average().getAsDouble();
System.out.println("平均年龄 : " + aveAge);
10. 获取属性集合
示例:获取所有用户的 id 集合
常规写法:
List<Long> ids = new ArrayList<>();
for(User u: userList){ids.add(u.getId());
}
Java 8 写法:
List<Long> ids = userList.stream().map(User::getId).collect(Collectors.toList());
11. List 转 Map
示例:将所有用户 List 集合转为 Map 集合,且 id 为键
常规写法:
Map<Long, User> userMap = new HashMap<Long, User>();
for (User user : users) {userMap.put(user.getId(), user);
}
Java 8 写法:
Map<Long, User> userMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Java 8 的那些常见写法
前言 现在Java已经发展到Java19版本了,由于Java后面一些版本,就开始商用收费了,所以目前绝大多数公司的JDK版本都是采用的之前稳定且免费的1.8版本,也就是Java8,这个版本已经能满足几乎所有业务的需求开发了ÿ…...
![](https://img-blog.csdnimg.cn/e13f500da02a4d4c99324ddc326e5749.png)
PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数的实现(多图长文详解)
目录 一、打开数据库表 1. 写打开数据库的槽函数 2. 运行后发现数据库可以打开了 3. ODBC配通了,数据库还是打不开 4. 写在tableView上显示数据库表的函数 5. 运行后发现表可以显示了 6. 代码分析 7. 添加列名称 8. 根据内容调整列宽 9. 备注:…...
![](https://img-blog.csdnimg.cn/4a93dcf091cc497b83d3cef1289cb03a.png)
QT 设计一个串口调试工具,用一个工程就能轻松解决,外加虚拟串口工具模拟调试,在日常工作中可类比模块间通信,非常详细建议收藏
QT 串口调试工具第一节 虚拟串口工具安装第二节 QT创建一个基于QWidget的项目第三节 UI界面设计第三节 项目头文件widget.h第四节 项目实现文件widget.cpp第五节 main函数第六节 编译结果重点第七节 使用QT打包程序,不安装QT的电脑可使用第一节 虚拟串口工具安装 -…...
![](https://img-blog.csdnimg.cn/ac31b6ae18b5490ca805ab80e8363f19.png)
OpenSumi 是信创开发云的首选
原文作者:行云创新技术总监 邓冰寒 引言 随着云原生应用的日益普及,开发上云也逐步被越来越多的厂商和开发者接受,在这个赛道国内外有不少玩家,国外的 GitHub Codespaces、CodeSandbox,GitPod、亚马逊 Cloud9…...
![](https://img-blog.csdnimg.cn/1b76b3fc6e264e17a8a9b1d4da9e3170.png)
JdbcTemplate常用方法解析
文章目录1.JdbcTemplate简介2.JdbcTemplate主要方法:3.常用方法介绍update()方法增删改query()查询方法1.JdbcTemplate简介 JdbcTemplate是Spring JDBC的核心类,借助该类提供的方法可以很方便的实现数据的增删改查。 Spring对数据库的操作在jdbc上面做…...
![](https://img-blog.csdnimg.cn/img_convert/847c79ab6f84697ee27dadd24fac0d4b.jpeg)
生物素标记试剂1869922-24-6,Alkyne-PEG3-Biotin PC,炔烃PEG3生物素PC
1、试剂基团反应特点(Reagent group reaction characteristics):PC alkyne-PEG3-Biotin含一个炔烃和一个 PEG 链接的可光裂解生物素基团。含 3 个单元 PEG 的 ADC linker,生物素本身是个游离的小分子,在生物实验中常常…...
![](https://img-blog.csdnimg.cn/b8ccec91b881418b80ab6f97e898aacf.png#pic_center)
CS224W课程学习笔记(三):DeepWalk算法原理与说明
引言 什么是图嵌入? 图嵌入(Graph Embedding,也叫Network Embedding) 是一种将图数据(通常为高维稠密的矩阵)映射为低微稠密向量的过程,能够很好地解决图数据难以高效输入机器学习算法的问题。…...
![](https://img-blog.csdnimg.cn/img_convert/c50878fb610105f0d2d365e5240b0171.jpeg)
rk3568 开发板Ubuntu系统说明
Ubuntu MinimalUbuntu Minimal系统基于Ubuntu 64bit系统构建,目前发布有Ubuntu18.04这个版本。与Ubuntu Desktop 相比具有以下特性:没有桌面环境,占用资源少,在简化网络管理之后,只需40M内存;针对嵌入式平台…...
![](https://www.ngui.cc/images/no-images.jpg)
Windows和Linux常用HASH算法使用命令
Windows和Linux常用hash算法使用命令 Windows,以文件xxx.zip为例 Windows 求文件 md5 certutil -hashfile xxx.zip md5Windows 求文件 sha1 certutil -hashfile xxx.zip sha1Windows 求文件 sha256 certutil -hashfile xxx.zip sha256Linux,以文件xxx.z…...
![](https://img-blog.csdnimg.cn/d81f979a56af4738807c847676311adb.png)
货仓选址 AcWing(JAVA)
在一条数轴上有 N家商店,它们的坐标分别为 A1∼AN。 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送商品。 为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。 输入格式&#…...
![](https://img-blog.csdnimg.cn/41f99543d5304e609275feb467c9c6c7.png)
SPI+DMA传输性能比较
本文章仅仅简单记录32单片机的SPIDMA驱动显示屏的性能测试,这里不花费时间介绍SPI和DMA。 硬件材料:SPI显示屏一个,32单片机 软件材料: 1.LCD的SPI驱动显示程序(SPI / SPIDMA): (1&a…...
![](https://img-blog.csdnimg.cn/943f5d5bc835432faf627f4ce6ce08fd.png)
Centos7系统编译Hadoop3.3.4
1、背景 最近在学习hadoop,此篇文章简单记录一下通过源码来编译hadoop。为什么要重新编译hadoop源码,是因为为了匹配不同操作系统的本地库环境。 2、编译源码 2.1 下载并解压源码 [roothadoop01 ~]# mkdir /opt/hadoop [roothadoop01 ~]# cd /opt/had…...
![](https://www.ngui.cc/images/no-images.jpg)
pb并发控制
并发控制(一) 并发能力是指多用户在同一时间对相同数据同时访问的能力。一般的关系型数据库都具 有并发控制的能力,但是这种并发功能也会对数据的一致性带来危险。试想若有两个用 户都试图访问某个银行用户的记录并同时要求修改该用户的存款余额时,情况将会怎样 呢?我们可以…...
![](https://www.ngui.cc/images/no-images.jpg)
登录拦截器
文章目录前言一、interceptor1.interceptor 包下新建loginInterceptor.java2.config 包下新建 AdminWebConfig.java3.返回登录页面接收提示信息前言 本篇主要介绍spring框架里提供的 HandlerInterceptor 拦截器做登录拦截。 一、interceptor 1.interceptor 包下新建loginInte…...
![](https://www.ngui.cc/images/no-images.jpg)
STM32 - HAL库UART串口
1.串口初始化配置/******************************************************************************* Function: BSP_UART_Init Description: 串口初始化 Input: instance 串口号baudRate: 波特率 Output: 无 Return: 无 ************************************************…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue3 的状态管理库(Pinia)
目录前言:一、什么是 Pinai二、安装与使用pinia三、什么是 store四、state1. 定义 state2. 组件中访问 state五、Getters1. 定义 Getters2. 在组件中使用 Getters六、Actions1. 定义Actions2. 组件中访问 Actions总结:前言: 在编写vue里的项目…...
![](https://img-blog.csdnimg.cn/2ac1e6291bca4b8f910925391833d262.png)
信息系统项目管理师知识点汇总(2023最新)
信息系统项目管理师 信息系统项目管理师简介如何应对考试考试细节与学习 十大管理 十大管理四十七过程 信息化和信息系统 项目管理基础 项目整体管理 项目范围管理 项目进度管理 项目成本管理 项目质量管理 项目人力资源管理 项目沟通管理 项目干系人管理 项目风险…...
![](https://img-blog.csdnimg.cn/img_convert/5b621db06144e6dab0645a2bc13b95f7.png)
标题标题标题
图床(Typora uPic/PicGo 七牛云) 图床(Typora uPic/PicGo 七牛云) 笔者平时使用 Typora 编写 markdown 文档,文档中常常会放置图片,如果文档不需要分享的话,其实讲图片存放在本地就可以了…...
![](https://www.ngui.cc/images/no-images.jpg)
OKR学习总结二
总结 绩效管理不是进行事后管理,而是参与整个过程并进行实时把控。 我们将受益目标分为两个子目标: 新增收入和重复收入。第一部分目标由市场营销部承担,第二个目标则由产品部承担。 简而言之,文化是一系列价值观和信仰的体现&…...
![](https://img-blog.csdnimg.cn/img_convert/c3b4f13cbe251167a52329a3cd073741.png)
MAC中docker搭建fastdfs
1:首先搭建Docker2:通过Docker搭建fastdfs(1)查找镜像打开终端通命令查找fastdfs的镜像docker search fastdfs(二)拉取镜像在找到合适的镜像后执行命令:docker pull delron/fastdfs(三) 创建storage和track…...
![](https://img-blog.csdnimg.cn/img_convert/892bc606da51e7196d36b5ba35b81855.gif)
JavaScript 变量
变量是用于存储信息的"容器"。实例var x5;var y6;var zxy;尝试一下 就像代数那样x5y6zxy在代数中,我们使用字母(比如 x)来保存值(比如 5)。通过上面的表达式 zxy,我们能够计算出 z 的值为 11。在…...
![](https://www.ngui.cc/images/no-images.jpg)
【前端验证】环境仿真中对于寄存器配置的随机策略讨论
前言 本篇文章旨在讨论环境仿真中对于寄存器配置的随机。 寄存器域的随机性 使用ralgen生成的寄存器本身是rand属性的,也就是说其自身是可以通过约束随机的方式在用例中进行随机性配置的,比如下面这个寄存器: class ral_reg_REG_PRJ_sys_cfg_base_config extends uvm_re…...
![](https://img-blog.csdnimg.cn/img_convert/1fa9d3fd7708ed3edee33ab78f0fca9b.png)
Servlet如何读取Web资源文件?【操作演示】
在实际开发中,有时候可能会需要读取Web应用中的一些资源文件,比如配置文件,图片等。为此,在ServletContext接口中定义了一些读取Web资源的方法,这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应…...
![](https://img-blog.csdnimg.cn/ceff97eb9c2d48319676419919166b87.png)
[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2019-6339)
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
![](https://img-blog.csdnimg.cn/img_convert/c7a52bfbe43a70c6a6f0ea76e7e4113f.png)
flex-shrink和felx-grow
本文就是简单的介绍下flex-shrink和felx-grow的作用和计算方式吧;关于这个介绍也是很多;flex-shrinkflex-shrink是flex布局中的一种方式,简单来说,就是当布局大小小于容器大小的时候,使用flex-shrink能够按照一定的比例…...
![](https://img-blog.csdnimg.cn/img_convert/2d4562ec99f64999833cdec30358c5ea.png)
将HTTP接口配置成HTTPS
一、使用Java的keytool.exe程序生成本机的TLS许可找到Java的jdk目录进入bin默认安装路径C:\Program Files\Java\jdk1.8.0_91\bin 进入命令面板,在bin的路径栏中输入cmd敲击回车即可使用keytoolkeytool -genkeypair -alias tomcat_https -keypass 123456 -keyalg RSA…...
![](https://www.ngui.cc/images/no-images.jpg)
YOLOV5报错解决办法
🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓YOLOV5报错解决办法,做好准备了么,那么开始吧。 🌲🌲🐴🐴 1.在pycharm终端使用pip install…...
![](https://img-blog.csdnimg.cn/img_convert/2348e67609e140a49f30f62e580f78f5.png)
java final关键字 详解
概述:作用:细节:演示:总结:一、概述 : final [ˈ faɪnl],最终的,最后的,决定性的,不可改变的。final作为Java中的一个关键字可以用来修饰类,方法,…...
![](https://img-blog.csdnimg.cn/30f4f1e9df8843a1a6ae882d2eac0db0.png)
Vbs_To_Exe制作简易exe程序
文章目录一、准备vbs脚本文件二、工具打包exe一、准备vbs脚本文件 新建一个文本文档 复制下面代码到文本文档中 Set speech CreateObject("SAPI.SpVoice") speech.Speak "l love you!"修改文本后缀为.vbs。编码选择ANSI(解决中文乱码问题&am…...
![](https://img-blog.csdnimg.cn/img_convert/73877c2f4e440ff78e27d20b92ab9314.png)
AI制药 - TMScore(US-align)、RMSD、Sequence 源码
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467 参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align 官网地址:https://zhanggroup.org/US-align/ TMScore TMScore,…...
![](/images/no-images.jpg)
手机制作网站的软件/定制网站
今天nowcoder上笔试做了一道字符移动的题目,大概意思就是把类似 *ab*cd***ef 的字符串移动为 *****abcdef ,开始用String做的,提交后提示50%的case过了,其他的case超时了。然后换成用StringBuilder就全部通过了,amazin…...
![](/images/no-images.jpg)
临沂网站建设和轶件安装/电脑优化软件哪个好用
Selenium是一个web自动化测试框架。用它可以实现web应用自动化测试。不过,我不只是用它来做测试,我还用它从电子商务网站签到页面爬取javascript生成的或AJAX的内容。 作为程序员,我不满足于使用Selenium IDE来记录和重放宏记录。那样很蹩脚&…...
![](https://images0.cnblogs.com/blog/75158/201301/29112942-1ad1dcf27bc44d57881e44baa6002235.jpg)
珠海中国建设银行招聘信息网站/国内5大搜索引擎
WCF由 .NET Framework 3.0 (大概在07年前后)开始引入,时隔五年多,才开始学习,再看到一些大牛在几年前已经 对WCF有比较深入了解,并写了不少博客,顿感学习之迟钝、技术之落伍——这其中有些人可能是对新技术的狂热和兴趣…...
![](https://img-blog.csdnimg.cn/0532741d6fa147bea4d11c965f554e05.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3RvbmVfdGlnZXJMSQ==,size_19,color_FFFFFF,t_70,g_se,x_16)
公司网站备案 问我借身份证 怎么拒绝/seo优化技术培训
1、安装N卡驱动 首先添加源 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update然后检查可以安装的驱动版本号 nvidia-msi选择适合自己的驱动,这里需要注意不同版本的cuda需要的驱动版本号也不一样,参考表链接点这里 Ubuntu 18.04安…...
![](/images/no-images.jpg)
网站建设谈业务要知道什么/网络推广费用计入什么科目
js删除网页中图片width 和 height 一段代码轻松搞定 适用于: 电脑端网页带图片属性导致移动网页显示错位/错误 备注: 需搭配jquery.min.js (注!jquery-2.0以上版本不再支持IE 6/7/8) 并不是最新的版本就最好的,而是根据您项目…...
![](/images/no-images.jpg)
营销型企业网站例子/如何做网站的教程
开始->程序->Adobe Flex 3 SDK Command Prompt 输入 asdoc -source-path d:\flexProject\你的项目\src -doc-classes 主类名 这样会生成所有类的帮助文档 有时只生成一个类,如果想生成所有 asdoc -source-path d:\flexProject\你的项目\src -doc-sources d:\f…...