Java排序由多属性、多状态值决定次序的列表

编程中经常被这种排序困扰,往往要写大量的if else 来进行判断排序,而且往往思维不清晰;正常的升序/逆序排序就是比较某个属性值得大小就可以,现在我想到了一个方法把这种交织的排序抽象成简单的升序/逆序排序。话不多说下面直接上代码

    public enum Weight {
        FIRST,
        SECOND,
        THIRD,
        FOURTH
    }

    private  Weight getAppWeight(AppData app){
        if(app.getTask() == null)
            return Weight.FIRST;
        else if(app.getTask().getStatus() == -1)
            return Weight.SECOND;
        else if(app.getTask().getStatus() == 0)
            return Weight.THIRD;
        else
            return Weight.FOURTH;
    }
Collections.sort(result.getDate(), (o1, o2) ->
                Integer.compare(getAppWeight(o1).ordinal(), getAppWeight(o2).ordinal()));

给每个排序个体赋予权重,通过他们的权重来排序


猜你喜欢

转载自blog.csdn.net/u010949962/article/details/80925092