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

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

        

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 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 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));
        }

    }

排序结果如图:

JAVA8 实体类集合多个字段组合排序_第1张图片

你可能感兴趣的:(java,排序)