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不是一种数据 ...
随机推荐
- PGI 用户手册之 Site-Specific Customization of the Compilers
翻译自PGI Compiler User's Guide 1.6. 使用PGI编译器进行并行编程 PGI编译器支持多种样式的并行编程: 使用pgf77,pgf95,pgfortran,pgcc或pgc ...
- SQL in查询字段为Guid拼接处理办法
场景一:在我们写SQL脚本执行普通的Id 为Int,Long 类型查询为 譬如: select *from Table where id in (1,2,3); 场景二:SQL in 查询,当查询字段 ...
- Android studio java文件显示j爆红
今天在android studio打开一个原来的工程,此工程是很久以前使用eclipse创建的,在android studio下有些问题需要解决. 1.设置project的jdk, 2.设置modul ...
- 吴恩达老师机器学习课程chapter02——分类
吴恩达老师机器学习课程chapter02--分类 本文是非计算机专业新手的自学笔记,高手勿喷,欢迎指正与其他任何合理交流. 本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第六章 ...
- 在cesium中导出图片
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [BOM]实现页面loading效果,在图片资源加载完之前显示loading
使用到jquery. 判断整个页面是否加载完: // 这是根据js判断,页面加载完毕就显示 window.onload = function () { // console.log('load com ...
- Vue路由跳转时定位到页面顶部
代码如下: router.afterEach((to, from, next) => { document.body.scrollTop = 0; document.documentElemen ...
- Angular+FileSaver实现导出(xlsx或ExcelJS)
1.安装相关插件 npm install file-saver --savenpm install @types/file-saver --save-dev 一.xlsx(虽然强大,但是默认不支持改变 ...
- CSS3-transform缩放
缩放:transform:scale(倍数); 实现hover的时候加载播放图标,具体效果如下: 首先需要创建一个大盒子,盒子上面部分用一个div来呈放图片,下面部分直接书写文字.观察发现播放图标是存 ...
- Java-Java数据类型对应MySql数据类型
开发过程中常用的数据类型: Java Mysql 备注 整型 java.lang.Integer tinyint(m) 1个字节 范围(-128~127) java.lang.Integer ...