Stream 获取集合中符合条件的最新(时间)的记录

这篇具有很好参考价值的文章主要介绍了Stream 获取集合中符合条件的最新(时间)的记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.背景描述

在执行某一业务数据查询的过程中需要通过时间范围从第三方提供的接口中获取到数据(list集合),然后根据其中的某一个或多个条件获从list集合中获取符合条件的记录,符合条件的记录可能有多条,我们只需要最新的一条即可。

2.解决方案:使用流模式进行操作

2.1首先使用Stream 的filter方法进行条件过滤,然后使用Stream 的max方法获取最新的记录

private HisOrderPayDto getHisOrderByTradeFlowNo(String tradeFlowNo){
        return hisOrderPayDtos.stream()
                .filter(order -> Objects.equals(order.getTradeFlowNo(), tradeFlowNo))
                .max((o1,o2) -> o1.getTradeTime().compareTo(o2.getTradeTime())).orElse(null);
    }

hisOrderPayDtos 为三方接口返回的集合数据,tradeFlowNo为查询的条件

3.扩展

不论时间类型是String还是Date,上述方法都是可行的,亲测可用,请看如下代码

package cn.shanxincd.ih.test;

import cn.hutool.core.date.DateUtil;
import cn.shanxincd.ih.entity.SyUser;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName NewDataTest
 * @Description TODO
 * @Author @yangfeng
 * @Date 2022/11/3 16:13
 * @Version 1.0
 */
public class NewDataTest {

    public static void main(String[] args) {
        //1.构建list集合
        List<SyUser> list = new ArrayList<SyUser>();

        //2.添加模拟的测试数据
        SyUser syUser1 = new SyUser("张三","zs0001","2022-11-01 09:12:33",DateUtil.parseDate("2022-01-03"));

        SyUser syUser2 = new SyUser("张三","zs0002","2022-11-02 10:12:33",DateUtil.parseDate("2022-01-02"));

        SyUser syUser3 = new SyUser("张三","zs0003","2022-11-03 11:12:33",DateUtil.parseDate("2022-01-01"));

        SyUser syUser4 = new SyUser("李四","ls0001","2022-11-02 11:12:33",DateUtil.parseDate("2022-01-06"));

        SyUser syUser5 = new SyUser("李四","ls0001","2022-11-03 12:12:33",DateUtil.parseDate("2022-01-05"));

        SyUser syUser6 = new SyUser("李四","ls0001","2022-11-04 13:12:33",DateUtil.parseDate("2022-01-04"));

        list.add(syUser1);
        list.add(syUser2);
        list.add(syUser3);
        list.add(syUser4);
        list.add(syUser5);
        list.add(syUser6);


        //获取张三和李四对应的最新的时间数据
        SyUser user = list.stream().filter(syUser -> syUser.getName().equals("张三")).max((u1, u2) -> u1.getDataStr().compareTo(u2.getDataStr())).orElse(null);

        System.out.println(user);

        //根据日期获取李四对应的最新的数据
        SyUser user100 = list.stream().filter(syUser -> syUser.getName().equals("李四")).max((u1, u2) -> u1.getCreateTime().compareTo(u2.getCreateTime())).orElse(null);
        System.out.println(user100);



    }
}

stream取最新日期的对象,笔记,java,数据结构
张三获取的是dataStr最新的记录,李四获取的是createTime最新的记录。文章来源地址https://www.toymoban.com/news/detail-559150.html

到了这里,关于Stream 获取集合中符合条件的最新(时间)的记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java——如何使用Stream替换掉List<Student>中符合要求的元素

    要使用Stream流替换掉List中符合特定条件的元素,您可以使用Stream的map()方法对每个元素进行映射,并使用collect()方法将映射后的元素收集到一个新的List中。 示例代码: 在上述示例中,我们定义了一个Student类来表示学生,其中包含姓名和年龄属性。我们创建了一个List对象,

    2024年02月14日
    浏览(39)
  • 使用Stream流对集合排序

    有一些业务需要对集合按照一些规则进行排序,本篇介绍如何用Stream()对集合进行升序或者降序操作。 之前只有接触过使用数据库进行排序,有一些情况需要不同的排序结果,如果进行多次查询会多次操作数据库,所以有些地方使用流对集合操作是更好的选择。 Stream 流 - 调

    2024年02月12日
    浏览(59)
  • Java - Stream Filter 多条件筛选过滤

    Java Stream流中Filter用于通过设置的条件过滤出元素 ,示例如下: 如果需要进行多条件过滤 我们可以对这些参数进行处理,我们只是需要做一下判断,即: 让所有参数默认为 false,然后对传进来的值进行取值判断,若满足该条件为true,多个条件进行多次判断 判断完成之后 会

    2024年02月04日
    浏览(58)
  • 06 - Stream如何提高遍历集合效率?

    前面我们讲过 List 集合类,那我想你一定也知道集合的顶端接口 Collection。 在 Java8 中,Collection 新增了两个流方法,分别是 Stream() 和 parallelStream()。 现在很多大数据量系统中都存在分表分库的情况。 例如,电商系统中的订单表,常常使用用户 ID 的 Hash 值来实现分表分库,这

    2024年02月13日
    浏览(36)
  • 【JDK 8-集合框架】5.1 Stream 实战

    一、什么是 stream 二、操作步骤 三、概览stream接口源码 四、实战 执行结果: Stream 中文称为“ 流 ” 通过 将集合转换为 “流”的元素队列 通过声明性方式 , 能够对集合中的每个元素进行一系列并行或串行的流水线操作 元素是特定类型的对象,所以  元素集合看作一种流,

    2024年02月08日
    浏览(29)
  • Java中list集合stream流去重

    准备类: (1)根据单字段name去重 (2)根据多字段name price去重 (3)示例 输出打印结果

    2024年02月09日
    浏览(56)
  • Stream——集合数据按照某一字段排序

    之前,针对 Stream 链式编程中的几个方法做了大致的说明。详情可以参考: JDK 1.8 新特性之Stream 详解个人笔记 但实际业务中,总会存在很多复杂的思维,需要使用到 Stream ,此时玩的不熟练总感觉无从下手。 今后开始写几种常用的逻辑方式。 在数据查询出来后,需要针对集

    2024年02月04日
    浏览(54)
  • 不可变集合、Lambda表达式、Stream流

    不能被修改的集合 应用场景 如果某个数据不能被修改,把它防御性的拷贝到不可变集合中是个很好的实践。 当集合对象被不可信的库调用时,不可变形式是安全的。 创建不可变集合 在List、Set、Map接口中,都存在静态的of方法,可以获取一个不可变的集合。 方法名称 说明

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包