Stream流相关方法
2024-09-08 18:58:49
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); }
最新文章
- Nginx转发地址解决跨域问题
- Be a new gentleman
- audio和video元素
- Android项目结构分析
- 超市管理系统—NABCD模型
- C#网络资源列表
- ES Head is not working with elasticsearch-1.4.0.Beta1
- Python你必须知道的十个库
- 【Tomcat】使用Eclipse发布项目时,项目启动路径错误。
- React Starter Kit 中文文档
- Python3.5 在Ubuntu16.04上无法画图的解决方案
- Very Long Suffix Array
- Spring history、design philosophy (Spring的历史及设计理念)
- 【Cucumber】【问题集锦】
- vue 安装sass扩展
- python 入门基础4 --数据类型及内置方法
- 2 Kafka Broker
- Oracle Net Manager 服务命名配置以及用PL/SQL 登陆数据库
- 去掉if
- 【FFT】HDU4609-3 idiots