List中按某个字段,获取该字段最新的记录组成新集合

需求描述:有一个car对象,一个car可能有2020,2019,2018等好几个年限,我们要获取List中所有car最新的年限。
数据初始化:

List<Cars> cars = new ArrayList<>();
        Cars car1 = new Cars("1","CC7700",10,"2020");
        Cars car2 = new Cars("2","GG5588",10,"2021");
        Cars car3 = new Cars("3","VV9900",10,"2021");
        Cars car4 = new Cars("4","SS9955",10,"2021");
        Cars car5 = new Cars("5","CC7700",10,"2021");
        Cars car6 = new Cars("6","CC7700",10,"2018");
        Cars car7 = new Cars("7","VV9900",10,"2016");
        Cars car8 = new Cars("8","GG5588",10,"2016");
        Cars car9 = new Cars("9","VV9900",10,"2020");
        Cars car10 = new Cars("10","SS9955",10,"2015");
        cars.add(car1);
        cars.add(car2);
        cars.add(car3);
        cars.add(car4);
        cars.add(car5);
        cars.add(car6);
        cars.add(car7);
        cars.add(car8);
        cars.add(car9);
        cars.add(car10);

将List按year倒序排序后按name分组转化成Map,我们获取到Map的value第一个就是最新的年限

Map<String, List<Cars>> collect = cars.stream()
                .sorted(Comparator.comparing(Cars::getYear).reversed())
                .collect(Collectors.groupingBy(Cars::getName));

        List<Cars> carsList = new ArrayList<>();
        for (String key:collect.keySet()){
            carsList.add(collect.get(key).get(0));
        }

cars对象

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Cars {

    private String id;

    private String name;

    private Integer value;

    private String year;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值