Java 8排序自定义排序

问题描述


    class A {
        private String name;
        private int grade;
        private RD rd;
    
        // setters & getters
    }
    class RD {
        private double ef;
        private double mf;
        private int doe;
    
        // setters & getters
    }

基于4个不同列的自定义排序。

  1. 等级,升序
  2. ef降序
  3. 按升序排列
  4. mf降序 我试过了。

但是我没有得到正确的输出

这就是我所做的。


    class SortingCustom {
        public static void main(String[] args) {
            List<A> aList = new ArrayList<A>();
            Collections.sort(aList,Comparator.comparing(A::getGrade)
                    .thenComparing((A a,A b) -> {
                           return Double.compare(b.getRd().getEf(),a.getRd().getEf());
                    })
                    .thenComparing((A a,A b) -> {
                           return Integer.compare(a.getRd().getDoe(),b.getRd().getDoe());
                    })
                    .thenComparing((A a,A b) -> {
                           return Double.compare(b.getRd().getMf(),a.getRd().getMf());
                    })
            );
            //This doesnot sort all data.
        } 
    }

样本输出

Grade   EF      DOE    MF
======  =====  =====   ====
1       0.27     4     0.72
2       0.98     2     0.34
2       0.96     3     0.93
2       0.96     3     0.91
2       0.96     3     0.87
2       0.96     3     0.65
2       0.96     4     0.34
2       0.87     4     0.25
3       0.67     4     0.22
3       0.45     6     0.17

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)