java取对象数组相同名称下时间最迟和时间区间的结果集


一、对象数组相同名称下获得时间最迟的结果集

注意DateUtil工具类用了hutool工具包(当前日期2024-03-22)

    @Test
    void test() {
        BaseEntity baseEntity1 = new BaseEntity().setCreateId(1).setCreateTime(DateUtil.parseDate("2024-03-18"));
        BaseEntity baseEntity2 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-02-18"));
        BaseEntity baseEntity3 = new BaseEntity().setCreateId(1).setCreateTime(DateUtil.parseDate("2024-02-18"));
        BaseEntity baseEntity4 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-05-18"));
        BaseEntity baseEntity5 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-01-18"));
        ArrayList<BaseEntity> baseEntities = new ArrayList<>();
        baseEntities.add(baseEntity1);
        baseEntities.add(baseEntity2);
        baseEntities.add(baseEntity3);
        baseEntities.add(baseEntity4);
        baseEntities.add(baseEntity5);
        List<BaseEntity> collect = baseEntities.stream()
                .collect(Collectors.groupingBy(BaseEntity::getCreateId))
                .values().stream()
                .map(list -> list.stream().max(Comparator.comparing(BaseEntity::getCreateTime)).get())
                .collect(Collectors.toList());
        collect.forEach(item -> System.out.println("Latest item: " + item.getCreateId() + ", " + item.getCreateTime()));
    }

在这里插入图片描述

二、对象数组相同名称下获得时间区间内时间最迟的结果集

代码(当前日期2024-03-22)

    @Test
    void test() {
        BaseEntity baseEntity1 = new BaseEntity().setCreateId(1).setCreateTime(DateUtil.parseDate("2024-03-01")).setUpdateTime(DateUtil.parseDate("2024-04-01"));
        BaseEntity baseEntity2 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-02-01")).setUpdateTime(DateUtil.parseDate("2024-03-01"));
        BaseEntity baseEntity3 = new BaseEntity().setCreateId(1).setCreateTime(DateUtil.parseDate("2024-03-01")).setUpdateTime(DateUtil.parseDate("2024-05-01"));
        BaseEntity baseEntity4 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-03-01")).setUpdateTime(DateUtil.parseDate("2024-04-01"));
        BaseEntity baseEntity5 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-04-01")).setUpdateTime(DateUtil.parseDate("2024-05-01"));
        ArrayList<BaseEntity> baseEntities = new ArrayList<>();
        baseEntities.add(baseEntity1);
        baseEntities.add(baseEntity2);
        baseEntities.add(baseEntity3);
        baseEntities.add(baseEntity4);
        baseEntities.add(baseEntity5);
        List<BaseEntity> collect = baseEntities.stream()
                .collect(Collectors.groupingBy(BaseEntity::getCreateId))
                .values().stream()
                .map(list -> list.stream()
                        .filter(event -> event.getCreateTime().before(DateUtil.date()) && event.getUpdateTime().after(DateUtil.date()))
                        .max(Comparator.comparing(BaseEntity::getUpdateTime)).get())
                .collect(Collectors.toList());
        collect.forEach(item -> System.out.println("Latest item: " + item.getCreateId() + ", " + item.getCreateTime() + ", " + item.getUpdateTime()));
    }

在这里插入图片描述

三、对象数组相同名称下获得时间区间内时间最迟的结果集如果存在空则排除

发生场景
在这里插入图片描述
如果分组中存在组别内有不存在数据则排除该组别(当前日期2024年4月3日)

    @Test
    void test() {
        BaseEntity baseEntity1 = new BaseEntity().setCreateId(1).setCreateTime(DateUtil.parseDate("2024-03-01")).setUpdateTime(DateUtil.parseDate("2024-04-01"));
        BaseEntity baseEntity2 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-02-01")).setUpdateTime(DateUtil.parseDate("2024-03-01"));
        BaseEntity baseEntity3 = new BaseEntity().setCreateId(1).setCreateTime(DateUtil.parseDate("2024-03-01")).setUpdateTime(DateUtil.parseDate("2024-04-01"));
        BaseEntity baseEntity4 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-03-01")).setUpdateTime(DateUtil.parseDate("2024-04-01"));
        BaseEntity baseEntity5 = new BaseEntity().setCreateId(2).setCreateTime(DateUtil.parseDate("2024-04-01")).setUpdateTime(DateUtil.parseDate("2024-05-01"));
        ArrayList<BaseEntity> baseEntities = new ArrayList<>();
        baseEntities.add(baseEntity1);
        baseEntities.add(baseEntity2);
        baseEntities.add(baseEntity3);
        baseEntities.add(baseEntity4);
        baseEntities.add(baseEntity5);
        List<BaseEntity> collect = baseEntities.stream()
                .collect(Collectors.groupingBy(BaseEntity::getCreateId))
                .values().stream()
                .map(list -> list.stream()
                        .filter(event -> event.getCreateTime().before(DateUtil.date()) && event.getUpdateTime().after(DateUtil.date()))
                        .max(Comparator.comparing(BaseEntity::getUpdateTime)).orElse(null))//如果组别不符合筛选则返回null
                .filter(Objects::nonNull)//排除内容为null的组别
                .collect(Collectors.toList());
        collect.forEach(item -> System.out.println("Latest item: " + item.getCreateId() + ", " + item.getCreateTime() + ", " + item.getUpdateTime()));
    }

输出结果

Latest item: 2, 2024-04-01 00:00:00, 2024-05-01 00:00:00

  • 持之以恒,坚韧不拔,努力拼搏,未来才会闪耀光芒,坚信自己,勇往直前!
  • 拥有梦想的人永不放弃,付出汗水与泪水,笑对挑战,终将登上成功的巅峰。
  • 坚持信念,努力向前,无惧风雨,终会收获彩虹,心怀希望,梦想必能指引远方。
  • 冥冥中自有安排,付出总有回报,坚强勇敢,终能实现山重水复的壮丽辉煌。
  • 拥有信心,跨越难关,每一次挑战都是成长,心怀感恩,每一步坚定向前走。
  • 坚守初心,砥砺前行,执着追梦,不忘价值,终将登上成功的巅峰,浴火重生。
  • 勇往直前,不畏困难,扬起风帆,驶向明天,心怀感恩,拥抱平凡生活中的每个小确幸。
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和烨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值