Java 8 新特性 Stream 的使用场景(不定期更新)

news2024/11/23 0:53:22

方便在写代码的过程中直接使用,好记性不如好文章,直接 CV 改了直接用。提高 办(摸)公(鱼)效(时)率(间), 不然就直接问 GPT 也不是说不行。

只符合所筛选条件至多一条

CommonArea l = common.stream().filter(item ->item.getName().equals("aa")).findAny().orElse(null);

返回多条记录

List<Object> list = common.stream().filter(item -> item.getName().equals("aa"))
	.collect(Collectors.toList())

根据条件判断是否存在

anyMatch:只要有一个就会返回 true

boolean exist = userData.userList.stream()
                .anyMatch(u -> u.getUserName().equals(user.getUserName()));

allMatch:所有元素都满足就返回 true。

boolean exist = userData.userList.stream()
                .allMatch(u -> u.getUserName().equals(user.getUserName()));

提取对象 List 中的某一字段生成新的 List:

List<String> bkMajor = list.stream()
	.map(ZsbBkSchool::getBkMajor)
	.collect(Collectors.toList());

提取对象 List 中的某几个字段生成新的 List:

List<UserVO> bkMajor = list.stream().map(user -> {
    UserVO vo = new UserVO();
    vo.setUserId(user.getUserId());
    vo.setUserName(user.getUserName());
    return vo;
}).collect(Collectors.toList());

List 集合转字符串,逗号隔开

// 如何把list集合拼接成以逗号分隔的字符串 a,b,c  
List<String> list = Arrays.asList("a", "b", "c"); 
 
// 第一种方法,可以用stream流  
String join = list.stream().collect(Collectors.joining(","));  
System.out.println(join); // 输出 a,b,c  
 
// 第二种方法,其实String也有join方法可以实现这个功能  
String join = String.join(",", list);  
System.out.println(join); // 输出 a,b,c

List 选取两个字段转 Map

Map<Integer, String> map = list.stream().collect(Collectors.toMap(Entity::getId, Entity::getType));
// 上面的代码可能会报错(value 为 null 时)
Map<Integer, String> map = list.stream().collect(HashMap::new, (k, v) -> k.put(v.getId(), v.getType()),HashMap::putAll);

List 选取某一个字段作为key,value 为对象转为 Map

// 使用 Lambda 表达式
Map<Integer,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, User -> User));

// 使用 Function.identity() 简洁写法,也是返回对象本身
Map<Integer,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));

// 当 key 冲突的解决办法,这里选择第二个 key 覆盖第一个 key
Map<Integer,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));

List 选取某一个字段作为key,value 为 JSON 字符串

Map<String, String> collect = userList.stream().collect(Collectors.toMap(User::getOpenId, JSON::toJSONString));

List 选去某一个 BigDecimal 字段或其他数值字段进行相加

// 使用Stream的reduce方法将BigDecimal字段的值相加
BigDecimal sum = numbers.stream()
    .reduce(BigDecimal.ZERO, BigDecimal::add);

// 使用Stream的mapToInt和sum方法对Item对象的price字段进行累加
BigDecimal total = items.stream()
    .map(Item::getPrice)
    .reduce(BigDecimal.ZERO, BigDecimal::add);

List<Integer> 使用 stream 进行去重

List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5, 6, 6, 7);

List<Integer> distinctNumbers = numbers.stream()
    .distinct()
    .collect(Collectors.toList());

后续将不定期更新 Stream 的骚操作使用,如果有其他更好的使用可以告知一下。

在这里插入图片描述

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

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

相关文章

win10 + cmake3.17 编译libpng-1.6.34

需要预先编译zlib库当前的根目录为&#xff1a;D:\Depend_3rd_party\libpngx64\ 1. 下载并解压libpng-1.6.34&#xff0c;得到 D:\Depend_3rd_party\libpngx64\libpng-1.6.34 2. 创建build文件夹&#xff0c;install文件夹&#xff0c;得到 D:\Depend_3rd_party\libpngx64\i…

数据库--数据库约束/聚合查询/分组查询/联合查询

前言 逆水行舟&#xff0c;不进则退&#xff01;&#xff01;&#xff01; 目录 数据库约束 聚合查询 分组查询 联合查询 联合查询---内连接与外连接 补充 联合查询用到的代码 数据库约束 not null 约束&#xff1a;在创建表的时候&#xff0c;可以指定列…

【实验记录】为了混毕业·读读论文叭

PR曲线 1. Robust_Place_Recognition_using_an_Imaging_Lidar 在第三节方法中&#xff0c;提到了一些列处理步骤&#xff0c;分析来与vins相似&#xff0c;在vins中是关键帧检索、特征提取、DBoW查询、描述子匹配、PnP RANSAC求解。 第四节的实验部分&#xff0c;没有绘制pr…

MyBatis 详解

目录 1.MyBatis 框架的搭建 1.1 创建数据库和表 1.2 添加 MyBatis 依赖 1.3 设置 MyBatis 配置 1.3.1 设置数据库的连接信息 1.3.2 设置 XML 保存路径和命名格式 1.4 根据 MyBatis 写法完成数据库得操作 1.4.1 定义接口 1.4.2 使用 XML 实现接口 2.MyBatis查询操作 …

手记系列之七 ----- 分享Linux使用经验

前言 本篇文章主要介绍的关于本人在使用Linux记录笔记的一些使用方法和经验&#xff0c;温馨提示&#xff0c;本文有点长&#xff0c;约1.7w字&#xff0c;几十张图片&#xff0c;建议收藏查看。 一、Linux基础使用 1&#xff0c;服务器查看及时日志 tail -500f catalina.out …

npm的使用

package.json 快速生成package.json npm init -y “version”: “~1.1.0” 格式为&#xff1a;「主版本号. 次版本号. 修订号」。 修改主版本号是做了大的功能性的改动 修改次版本号是新增了新功能 修改修订号就是修复了一些bug dependencies "dependencies": {&…

计算机组成与结构-计算机体系结构

计算机体系结构 指令系统 Flynn分类法 SISD&#xff08;单指令流单数据流&#xff09; 结构 控制部分&#xff1a;一个处理器&#xff1a;一个主存模块&#xff1a;一个 代表 单处理器系统 SIMD&#xff08;单指令流多数据流&#xff09; 结构 控制部分&#xff1a;一个处理…

2022年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 十六进制数100&#xff0c;对应的十进制数为 &#xff1f;&#xff08; &#xff09; A: 128 B: 256 C: 28 D: 56 答…

基于Qt命令行处理XML文件读写

Qt源码在后面,文本介绍Qt国际化语言和XML # XML基础(一) ## 1、概述 ### 1.1 定义(xml是个啥玩意儿?) XML(extensible Markup Language)俗称差妹儿,专业称之为:可拓展标记语言。 (1)何为标记,指的是一种标记语言,或者标签语言,即用一系列的标签来对数据进行…

Leetcode—421.数组中两个数的最大异或值【中等】明天写一下字典树做法!!!

2023每日刷题&#xff08;十九&#xff09; Leetcode—421.数组中两个数的最大异或值 算法思想 参考自灵茶山艾府 实现代码 class Solution { public:int findMaximumXOR(vector<int>& nums) {int maxValue *max_element(nums.begin(), nums.end());int highId…

STM32笔记-AD模数转换

目录 一、ADC介绍 二、ADC主要特征 三、ADC框图 1. ​​​​ 外部触发转换 ​ 2. 转换模式 3. 输入通道 4. 逻辑框图 四、校准 五、数据对齐 六、AD转换步骤 七、AD_Init(单通道AD转换)初始化函数配置 一、ADC介绍 1. 12位ADC是一种逐次逼近型模拟数字转换器。它有多达…

扣人心弦玄幻小说,故事爽度堪比热门IP,堪称史诗级作品

《万古不死&#xff0c;葬天&#xff0c;葬地&#xff0c;葬众生》 这本书是我看过最符合我心意的长生文。它始终在刻画一个长生者的经历&#xff0c;并且每一次的离别和悲伤都恰到好处。主角不是直接睡到无敌然后出去浪&#xff0c;而是不断学习&#xff0c;智商在线。坑杀雷族…

垃圾回收系统小程序定制开发搭建攻略

在这个数字化快速发展的时代&#xff0c;垃圾回收系统的推广对于环境保护和可持续发展具有重要意义。为了更好地服务于垃圾回收行业&#xff0c;本文将分享如何使用第三方制作平台乔拓云网&#xff0c;定制开发搭建垃圾回收系统小程序。 首先&#xff0c;使用乔拓云网账号登录平…

用户界面执行器设计场景-PR性能测试工具/压力测试工具

要使用 PerformanceRunner性能测试工具/压力测试工具测试您的系统&#xff0c;必须创建负载测试场景。场景定义每次测试期间发生的事件。场景定义并控制要模拟的用户数、这些用户执行的操作以及用于运行模拟场景的计算机。执行器负责设计场景、运行场景、控制场景、各种波形图生…

【广义表,树,满二叉树,完全二叉树,二叉树的存储结构】

文章目录 广义表树树的基本术语线性结构和树结构的比较二叉树的定义案例二叉树的性质和存储结构两种特殊形式下的二叉树满二叉树完全二叉树完全二叉树的性质 二叉树的存储结构二叉树的顺序存储结构二叉树的链式存储结构三叉链表 广义表 广义表&#xff08;又称Lists&#xff0…

建筑能源管理(8)——合同能源管理

1、简介 合同能源管理是20世纪70年代中期在发达国家逐步发展起来的一种节能服务机制在国外简称EPC(Energy Performance Contracting)&#xff0c;在国内广泛地被称为EMC (Energy Management Contracting)&#xff0c;它由专门的节能服务公司(Energy Service Company,ESCO)在为…

【KVM】软件虚拟化和硬件虚拟化类型

前言 大家好&#xff0c;我是秋意零。 今天介绍的内容是虚拟化技术以及软件虚拟化和硬件虚拟化。 &#x1f47f; 简介 &#x1f3e0; 个人主页&#xff1a; 秋意零&#x1f525; 账号&#xff1a;全平台同名&#xff0c; 秋意零 账号创作者、 云社区 创建者&#x1f9d1; 个…

Windows搭建Web站点:免费内网穿透发布至公网

目录 什么是cpolar&#xff1f; 概述 1. 注册并安装cpolar内网穿透 2. 搭建一个静态Web站点 2.1 下载演示站点 2.2 本地运行演示站点 2.3 本地浏览测试站点是否正常 3. 本地站点发布公网可访问 3.1 登录cpolar web ui管理界面 3.2 启动website隧道 3.3 获取公网URL地…

【数据结构】单链表详解(超详细)

单链表是我们学习数据结构时必不可少的部分&#xff0c;但也由于指针的参与变得更加复杂&#xff0c;这篇文章学习完之后可以更好地理解与掌握链表结构 注意&#xff1a; 数据结构中&#xff0c;不在乎菜单的创建&#xff0c;注重的是功能的实现&#xff1b;菜单的创建会影响我…

什么是协议栈? 用户态协议栈设计(udp协议栈)

什么是协议栈呢&#xff1f; &#xff08;协议栈&#xff08;Protocol Stack&#xff09;是计算机网络和通信系统中的一个重要概念&#xff0c;它指的是一组协议层的层次结构&#xff0c;这些协议层一起协同工作&#xff0c;以便在不同计算机或设备之间实现数据通信和交换。每…