编程中经常被这种排序困扰,往往要写大量的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()));
给每个排序个体赋予权重,通过他们的权重来排序