Stream流相关方法
LIST<对象> 转换MAP 并根据某个字段分组
// 并根据某个字段分组,并做了归类
Map<String, List<User>> collect = users.stream().collect(Collectors.groupingBy(User::getUserName));
Map<String, List<SqePartInfoDTO>> partInfoMapByPmxu = partInfoDTOS.stream().collect(Collectors.groupingBy(SqePartInfoDTO::getPmxu));
// 根据某字段分组
Map<String, SqePartInfoDo> collect = partInfoDoList.stream().collect(Collectors.toMap(SqePartInfoDo::getPartNo, SqePartInfoDo -> SqePartInfoDo));
//当根据某字段(getIssueDetailId),该字段对应的Do有重复时,可以用这种方式
Map<Long, PisIssueMeasuresDoV1> measuresDoByDetailIdMap = unfinishedMeasureProcessList.stream().collect(
Collectors.toMap(PisIssueMeasuresDoV1::getIssueDetailId, PisIssueMeasuresDoV1 -> PisIssueMeasuresDoV1,(v1, v2) -> v1));
List按某个字段排序
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
获取List<对象>中每个对象某个属性的集合
List<String> partNos = list.stream().map(ApqpPartsStartConfigurationDo::getPartNo).collect(Collectors.toList());
// 对对象的属性做了去重
List<String> sSqeCodeList = records.stream().map(ApqpGroupBasicDo::getSSqeCode).distinct().collect(Collectors.toList());
Stream.filter:
//根据域账号分组
Map<String, ThirdSyncUserDTO> usersMapByWindowsAccount = allUsers.stream()
.filter(item -> StringUtils.isNotBlank(item.getWindowsAccount()))
.collect(Collectors.toMap(ThirdSyncUserDTO::getWindowsAccount, ThirdSyncUserDTO -> ThirdSyncUserDTO));
// 根据对象中某个字段进行排序,.reversed()降序
processInfoDTORespList = processInfoDTORespList.stream()
.sorted(Comparator.comparing(PisMalfunctionProcessInfoDTO::getRelationTime)
.reversed())
.collect(Collectors.toList());
stream流获取对象某个属性的最大和最小值:
PisIssueProcessDetailDo pisIssueProcessDetailDo = list.stream()
.max(Comparator.comparing(PisIssueProcessDetailDo::getIssueVersion)).get();
// DEMO
public static void main(String[] args) {
List<PisIssueProcessDetailDo> list = new ArrayList<>();
PisIssueProcessDetailDo issueProcessDetailDo01 = new PisIssueProcessDetailDo();
issueProcessDetailDo01.setIssueId(1L);
issueProcessDetailDo01.setIssueVersion(2L);
PisIssueProcessDetailDo issueProcessDetailDo02 = new PisIssueProcessDetailDo();
issueProcessDetailDo02.setIssueId(3L);
issueProcessDetailDo02.setIssueVersion(3L);
PisIssueProcessDetailDo issueProcessDetailDo03 = new PisIssueProcessDetailDo();
issueProcessDetailDo03.setIssueId(2L);
issueProcessDetailDo03.setIssueVersion(1L);
PisIssueProcessDetailDo issueProcessDetailDo04 = new PisIssueProcessDetailDo();
issueProcessDetailDo04.setIssueId(4L);
issueProcessDetailDo04.setIssueVersion(0L); list.add(issueProcessDetailDo01);
list.add(issueProcessDetailDo02);
list.add(issueProcessDetailDo03);
list.add(issueProcessDetailDo04); PisIssueProcessDetailDo pisIssueProcessDetailDo = list.stream()
.max(Comparator.comparing(PisIssueProcessDetailDo::getIssueVersion)).get();
PisIssueProcessDetailDo pisIssueProcessDetailDo1 = list.stream()
.max(Comparator.comparing(PisIssueProcessDetailDo::getIssueId)).get(); System.out.println(pisIssueProcessDetailDo); }
Stream流相关方法的更多相关文章
- Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串
Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串 原理::syso 向ByteArrayOutputStream这个流理想write字节..然后可以使 ...
- 在stream流和byte[]中查找(搜索)指定字符串
在 stream流 和 byte[] 中查找(搜索)指定字符串 这里注重看的是两个 Search 的扩展方法,一个是 stream 类型的扩展,另一个是 byte[] 类型的扩展, 如果大家有更好的“ ...
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- (六)jdk8学习心得之Stream流
六.Stream流 1. 什么是stream流 现阶段,可以把stream流看成一个高级版的Iterator.普通的Iterator只能实现遍历,遍历做什么,就需要具体些功能代码函数了.而这个stre ...
- stream流操作List工具类
工作中操作List对于程序猿来说是"基本操作",为了更加便利,对JDK8的新特性stream流进行二次封装.话不多说,直接上代码 package com.mydemo; impor ...
- java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2 ...
- NodeJS Stream流
NodeJS Stream流 流数据在网络通信中至关重要,nodeJS用Stream提供了一个抽象接口,node中有很多对象实现了这个接口,提供统一的操作体验 基本流类型 NodeJS中,Stream ...
- 关于Java8 Stream流的利与弊 Java初学者,大神勿喷
题目需求: 1:第一个队伍只要名字为3个字成员的姓名,存储到新集合 2:第一个队伍筛选之后只要前3人:存储到一个新集合 3:第2个队伍只要姓张的成员姓名:存储到一个新集合 4:第2个队伍不要前2人,存 ...
- 13函数式编程&Stream流
13.1常用的函数式接口总结 接口名称 方法名称 抽象/默认 延迟/终结 方法描述 Supplier get 抽象 终结 供给型接口,无参有返回值,主要用于 Consumer accept 抽象 ...
- Java8的Stream流(一) --- 基础用法
Java8中的Stream Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象. Stream的特性及优点: 无存储. Stream不是一种数据 ...
随机推荐
- PowerShell学习笔记一_cmdlet、管道、如何入门
PowerShell文件: .ps1 脚本文件 .psm1 模块文件 .psd1 模块描述文件 cmdlet(命令行) 组成: 动词-名词,例如: 1. Get-Service(获取所有服务),类似于 ...
- vi 异常退出出现 E325:Attention的解决办法
在linux系统下使用vi编辑程序的时候,没有保存退出,直接关闭了,出现了以下的情况: 打开就会显示filename.c.swap已经存在. 这是因为vi在编辑文件时会创建一个交换文件swap fil ...
- 为什么vue3要使用ref
vue3中使用ref来创建响应式数据,让习惯了选项式API的我很不习惯.因为得使用xxx.value来读写响应式数据,没有vue2中直接使用this.xxx来读写简洁. vue3这样设计的原因是原生J ...
- 01、kafka常用命令
001.kafka版本 kafka_2.13-3.0.0 kafka_2.12-2.8.0 002.模拟给topic名称是 yikuang 的发一条数据(hello world) ./kafka-co ...
- alertmanger告警配置
钉钉告警: 需先安装 Ding talk 配置 webhook vim docker-compose.yaml webhook-dingtalk: image: timonwong/prometheu ...
- python ElementTree 节点标签修改
在网上能找到很多关于xml库ElementTree的增删改查用法,这里我就不重复写那么多了. 主要记录一个,不是很容易查到的用法,比如一个标签,<name></name>,我需 ...
- 攻防世界Web进阶篇——warmup
打开链接,发现是一张滑稽 查看页面源代码,发现文件 于是打开source.php,发现 打开hint.php,根据提示得知flag在ffffllllaaaagggg文件中 回到source.php,检 ...
- Lua监听事件观察者模式(多个监听者监听)
fireEvent 产生事件,创建协程分发(在registerEventListener注册过的事件中通过事件名字找到对应的信息,然后执行对应模块的OnEvent函数),多个地方都注册了同一个事件的话 ...
- 物联网5G工业网关的特点和应用场景
BMG5100 系列产品,是一款工业级 5G 千兆物联网网关.集数据管理.智能采集.多种协议 转换.5G/4G 无线通信.数据处理转发.VPN 虚拟专网.本地存储.WIFI 覆盖等功能于一体. 产品特 ...
- AJAX-动力节点
AJAX(Asynchronous Javascript And Xml) 传统请求及缺点 传统的请求都有哪些? 直接在浏览器地址栏上输入URL. 点击超链接 提交form表单 使用JS代码发送请求 ...