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

方便在写代码的过程中直接使用,好记性不如好文章,直接 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.mzph.cn/news/132204.shtml

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

相关文章

Mysql学习文档笔记

文章目录 基础篇通用语法及分类DDL&#xff08;数据定义语言&#xff09;数据库操作注意事项 表操作 DML&#xff08;数据操作语言&#xff09;添加数据注意事项 更新和删除数据 DQL&#xff08;数据查询语言&#xff09;基础查询条件查询聚合查询&#xff08;聚合函数&#xf…

【C语法学习】18 - fread()函数

文章目录 1 函数原型2 参数3 返回值4 示例 1 函数原型 fread()&#xff1a;从与指定流stream相关联的二进制文件中读取数据块储存在str指向的内存空间中&#xff0c;函数原型如下&#xff1a; size_t fread(const void *ptr, size_t size, size_t count, FILE *stream)2 参数…

[动态规划] (七) 路径问题:LCR 166.剑指offer 47. 珠宝的最高价值

[动态规划] (七) 路径问题&#xff1a;LCR 166./剑指offer 47. 珠宝的最高价值 文章目录 [动态规划] (七) 路径问题&#xff1a;LCR 166./剑指offer 47. 珠宝的最高价值题目解析解题思路状态表示状态转移方程初始化和填表顺序 返回值代码实现总结 LCR 166. 珠宝的最高价值 题目…

python web框架 flask基础入门教程

python web框架 flask基础入门教程 今天我们写一个flask基础入门教程&#xff0c;当然也会覆盖很多重要的知识点&#xff0c;在这篇博客中&#xff0c;我们主要会讲解如下内容&#xff1a; 1、通过flask框架向web传输和接收参数 2、实现静态图片插入和图书上传 3、实现搭建…

宝塔面板使用Supervisor进程守护插件,配置守护Mysql的操作教程。

本篇文章主要讲解&#xff0c;在宝塔面板中使用Supervisor进程守护插件&#xff0c;配置守护Mysql的操作教程。 作者&#xff1a;任聪聪 日期&#xff1a;2023年11月5日 一、安装守护进程插件 安装插件一、进程守护插件 安装说明&#xff1a;在软件商店中搜索“进程守护”&am…

VC++常用命名法和宏定义

匈牙利命名法规则 一般情况下&#xff0c;变量的取名方式为&#xff1a; <scope_> <prefix_> <qualifier>。 范围前缀_&#xff0c;类型前缀_&#xff0c;限定词。 特殊的类型命名,前缀表示&#xff1a; 类、接口 前缀 类型 例子 备注 Lm Class …

【Vue】使用v-model实现控制子组件显隐

v-model 可以实现双向绑定的效果&#xff0c;允许父组件控制子组件的显示/隐藏&#xff0c;同时允许子组件自己控制自身的显示/隐藏。以下是如何使用 v-model 实现这个需求&#xff1a; 在父组件中&#xff0c;你可以使用 v-model 来双向绑定一个变量&#xff0c;这个变量用于…

2019 ICPC 银川题解(A,H,L)

赛时没发挥好6题金尾&#xff08;rank38&#xff09;&#xff0c;剩下很多能写的题&#xff0c;其中四个dp&#xff0c;傻眼ing The 2019 ICPC Asia Yinchuan Regional Contest A Girls Band Party&#xff08;背包&#xff09; 有点迷惑的题&#xff0c;当时看只要 5 5 5 张…

电脑时间校对怎么做?看这里,分享4个方法!

“我的电脑时间总是和手机的时间不一样&#xff0c;应该是电脑的时间不准确了&#xff0c;想知道大家遇到这种情况时是如何校对电脑时间的呀&#xff1f;” 随着电脑在我们日常生活中的广泛应用&#xff0c;确保电脑时间准确性变得至关重要。电脑时间校对不仅有助于同步文件和通…

爬虫之爬虫介绍、requests模块、携带请求参数、url 编码和解码、携带请求头

爬虫介绍 爬虫是什么&#xff1f; 网页蜘蛛&#xff0c;网络机器人&#xff0c;spider在互联网中 通过 程序 自动的抓取数据 的过程根上&#xff1a;使用程序 模拟发送http请求 ⇢ \dashrightarrow ⇢ 得到http响应 ⇢ \dashrightarrow ⇢ 把响应的数据解析出来 ⇢ \dashr…

小程序如何设置自动预约快递

小程序通过设置自动预约功能&#xff0c;可以实现自动将订单信息发送给快递公司&#xff0c;快递公司可以自动上门取件。下面具体介绍如何设置。 在小程序管理员后台->配送设置处&#xff0c;选择首选配送公司。为了能够支持自动预约快递&#xff0c;请选择正常的快递公司&…

S4.2.4.5 Fast Training Sequence (FTS)

一 本章节主讲知识点 1.1 FTS的用途和实现注意 二 本章节原文翻译 Fast Training Sequence (FTS) 主要用于在L0s->L0跳转的过程中&#xff0c;让Receiver 检测到电气空闲退出&#xff0c;以及实现bit 和 symbol lock。 2.1 Gen1 and Gen2 速率 对于Gen1/2 FTS的组成如下…

自定义element-ui plus 函数式调用,在API,js中直接使用全局组件

npm方式: npm install -D unplugin-vue-components unplugin-auto-import yarn 方式 : yarn add unplugin-vue-components; yarn add unplugin-auto-import; 使用官方的这个&#xff1a; vite.config.js中配置 plugins: [vue(),AutoImport({resolvers: [ElementPlusResolve…

02-Sping事务实现之声明式事务基于XML的实现方式

声明式事务之XML实现方式 开发步骤 第一步: 引入AOP相关的aspectj依赖 <!--aspectj依赖--> <dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>6.0.0-M2</version> <…

docker安装(超详细)

一.引言 本安装教程参考Docker官方文档&#xff0c;地址如下&#xff1a;https://docs.docker.com/engine/install/centos/ 二.卸载旧版docker(第一次安装可忽略) 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker…

电脑投屏到TCL电视鼠标延迟

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 笔记本电脑使用HDMI投屏到TCL电视&#xff0c;页面显示正常但是鼠标延迟反应太慢了 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; TCL电视设置中选择图像 → 图像类型改…

Flink源码解析二之执行计划⽣成

JobManager Leader 选举 首先flink会依据配置获取RecoveryMode,RecoveryMode一共两两种:STANDALONE和ZOOKEEPER。 如果用户配置的是STANDALONE,会直接去配置中获取JobManager的地址如果用户配置的是ZOOKEEPER,flink会首先尝试连接zookeeper,利用zookeeper的leadder选举服务发现…

如何处理前端本地存储和缓存

前端本地存储和缓存的处理是一种重要的技术&#xff0c;它可以帮助改善应用程序的性能和用户体验。下面是一些处理前端本地存储和缓存的常用方法&#xff1a; 1. 使用Web Storage API&#xff1a; 这是一种在浏览器中存储数据的方法&#xff0c;包括两种类型&#xff1a;loca…

【漏洞复现】Django -SQL注入漏洞复现(CVE-2019-14234)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 复现环境&#xff1a;Vulhub 环境启动后&#xff0c;访问http://192.168.80.141:8000即可看到Django默认首页 漏洞复现 首先登陆后台http://192.168.80.141:8000/admin/&#xff0c;用…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互&#xff0c;而前端框架的选择对于实现这些目标至关重要。然而&#xff0c;传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下&#xff0c;我们引入…