JAVA8 实体类集合多个字段组合排序

文章提供了一个Java代码示例,展示了如何使用Comparator对实体类集合进行多个字段的组合排序,包括字段的新客户标记、客户等级、订单日期和商品代码,同时支持升序和降序排列。
摘要由CSDN通过智能技术生成

    实体类集合多个字段组合排序,自由组合升降序,下面是参考代码示例:

        

import lombok.Data;

@Data
public class DbjrdmxDTO {

    private String djbh;
    private String rq; //订单日期
    private String ckdm;
    private String ckmc;
    private String newKhSign; //新客户标记 1
    private String khdm;
    private String khmc;
    private String khGrade; //客户等级
    private String khzydm;
    private String khzymc;
    private String fkrq;
    private Integer mibh;
    private String spdm;
    private String spmc;
    private Integer sl; //未通知数量
    private Integer sl1; //本次执行数量


    public DbjrdmxDTO() {
    }

    public DbjrdmxDTO(String rq, String newKhSign, String khGrade, Integer mibh, String spdm) {
        this.rq = rq;
        this.newKhSign = newKhSign;
        this.khGrade = khGrade;
        this.mibh = mibh;
        this.spdm = spdm;
    }


}
    public static void main(String[] args) {
        List<DbjrdmxDTO> list=new ArrayList<>();

        list.add(new DbjrdmxDTO("2023-07-10", "0", "02", 1, "24281"));
        list.add(new DbjrdmxDTO("2023-07-8", "0", "01", 2, "12428"));
        list.add(new DbjrdmxDTO("2023-07-10", "1", "01", 3, "41228"));
        list.add(new DbjrdmxDTO("2023-07-11", "0", "03", 4, "41228"));
        list.add(new DbjrdmxDTO("2023-07-11", "1", "03", 5, "24281"));
        list.add(new DbjrdmxDTO("2023-07-11", "1", "03", 6, "41228"));
        list.add(new DbjrdmxDTO("2023-07-12", "0", "03", 7, "12428"));
        list.add(new DbjrdmxDTO("2023-07-11", "1", "03", 8, "41228"));

        Comparator<DbjrdmxDTO> comparator=Comparator.comparing(DbjrdmxDTO::getNewKhSign,Comparator.reverseOrder()); //新客户排在最前(值倒序)
        comparator.thenComparing(DbjrdmxDTO::getKhGrade); //再按客户等级升序排序
        comparator.thenComparing(DbjrdmxDTO::getRq);      //再按订单日期升序排序
        comparator.thenComparing(DbjrdmxDTO::getSpdm);    //再按商品代码升序排序
        list.sort(comparator);
        for(DbjrdmxDTO mx:list){
            System.out.println(JSON.toJSONString(mx));
        }

    }

排序结果如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值