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

时间:2025-02-17 21:00:33
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); } }