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流相关方法的更多相关文章

  1. Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串

    Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串 原理::syso  向ByteArrayOutputStream这个流理想write字节..然后可以使 ...

  2. 在stream流和byte[]中查找(搜索)指定字符串

    在 stream流 和 byte[] 中查找(搜索)指定字符串 这里注重看的是两个 Search 的扩展方法,一个是 stream 类型的扩展,另一个是 byte[] 类型的扩展, 如果大家有更好的“ ...

  3. 这可能是史上最好的 Java8 新特性 Stream 流教程

    本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...

  4. (六)jdk8学习心得之Stream流

    六.Stream流 1. 什么是stream流 现阶段,可以把stream流看成一个高级版的Iterator.普通的Iterator只能实现遍历,遍历做什么,就需要具体些功能代码函数了.而这个stre ...

  5. stream流操作List工具类

    工作中操作List对于程序猿来说是"基本操作",为了更加便利,对JDK8的新特性stream流进行二次封装.话不多说,直接上代码 package com.mydemo; impor ...

  6. java8 Stream的实现原理 (从零开始实现一个stream流)

    1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2  ...

  7. NodeJS Stream流

    NodeJS Stream流 流数据在网络通信中至关重要,nodeJS用Stream提供了一个抽象接口,node中有很多对象实现了这个接口,提供统一的操作体验 基本流类型 NodeJS中,Stream ...

  8. 关于Java8 Stream流的利与弊 Java初学者,大神勿喷

    题目需求: 1:第一个队伍只要名字为3个字成员的姓名,存储到新集合 2:第一个队伍筛选之后只要前3人:存储到一个新集合 3:第2个队伍只要姓张的成员姓名:存储到一个新集合 4:第2个队伍不要前2人,存 ...

  9. 13函数式编程&Stream流

    13.1常用的函数式接口总结   接口名称 方法名称 抽象/默认  延迟/终结 方法描述 Supplier get 抽象 终结 供给型接口,无参有返回值,主要用于 Consumer accept 抽象 ...

  10. Java8的Stream流(一) --- 基础用法

    Java8中的Stream Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象. Stream的特性及优点: 无存储. Stream不是一种数据 ...

随机推荐

  1. RSTP-快速生成树协议

    1 STP的不足之处STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量. 2 RSTP概述RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP. 通过接口 ...

  2. 城市间最短路径问题——R和Rcpp实现

    这里的最短路径问题也叫做相识问题,具体问题来自 https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/examples.ht ...

  3. padding&margin

    margin是盒子的外边距,即盒子与盒子之间的距离,而padding是内边距,是盒子的边与盒子内部元素的距离. 鞋盒里面的鞋到 盒子的距离设置为 padding ,而 鞋盒到鞋架的距离设置为margi ...

  4. SAP 内外交货单过账

    * 交货单过账  DATA:  LS_HEADER_DATA           TYPE BAPIIBDLVHDRCON,              LS_HEADER_CONTROL   TYPE ...

  5. 用python3操作mysql数据库实现企业级产品参数查询

    Python3 MySQL 数据库连接 - PyMySQL 驱动 一.什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则 ...

  6. SqlServer中 Partition By 的使用( 对多行数据分组后排序取每个产品的第一行数据)

    1:数据库表结构: (产品图片表) select * from product_imgs 2:应用场景: 可见表中每一个产品(pro_id)可能对应多个图片(img),我想要按照添加时间的先后顺序,获 ...

  7. 构建一个自己的CocoaPods库

    1.首先去github 创建一个项目 .然后将你的代码传到github 2.终端 进入项目根目录 生成podspec pod spec create SJTestPod 注意生成的pod一定要唯一.不 ...

  8. 解决leetcode登录报错

    1.安装leetcode 2.安装成功后会在拓展下面增在如下图标 点开界面如下 [] 3.点击小地球弹出如下弹窗,选择 启用中国版,可以多点击几次,防止没有选中 4.点击圈出的图标 选择第一个 5.输 ...

  9. go 死锁示例

    以下代码不会有任何打印.原因是:channel ch 在make 时是无缓冲区的channel.无缓冲区的channel 发送一个数据进入后需要等待这个数据被消耗才能继续发送下一个数据.然而getFr ...

  10. pytorch学习笔记(8)--现有模型的使用和修改

    官网网址: https://pytorch.org/vision/0.9/models.html#semantic-segmentation (1).ImageNet train_data = tor ...