随笔 - 9, 文章 - 0, 评论 - 0, 阅读 - 9074

Stream流相关方法

Posted on   那年雨时  阅读(52)  评论(0编辑  收藏  举报

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));
1
2
3
//当根据某字段(getIssueDetailId),该字段对应的Do有重复时,可以用这种方式<em id="__mceDel">Map<Long, PisIssueMeasuresDoV1> measuresDoByDetailIdMap = unfinishedMeasureProcessList.stream().collect(
            Collectors.toMap(PisIssueMeasuresDoV1::getIssueDetailId, PisIssueMeasuresDoV1 -> PisIssueMeasuresDoV1,(v1, v2) -> v1));
</em>

  

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); }
复制代码

 

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示