Java中的自定义排序用法

139

自定义排序类 public class SubmitStatusComparator implements Comparator, Serializable{

private final static List<SubmitStatus> status = Lists.newArrayList(SubmitStatus.SUBMIT_SUCCESS, SubmitStatus.PENDING_FEEDBACK, SubmitStatus.PENDING_SUBMIT, SubmitStatus.SUBMIT_FAILURE);

@Override
public int compare(SubmitStatus o1, SubmitStatus o2) {
    int index1 = status.indexOf(o1);
    int index2 = status.indexOf(o2);
    return index1 == index2 ? 0 : index1 > index2 ? 1 : -1;
}

}

使用

SubmitStatusComparator status = new SubmitStatusComparator(); Comparator<Taxpayer> comparator = Comparator.comparing(Taxpayer::getSubmitStatus, status) .thenComparing(Taxpayer::getTaxYear) .thenComparing(Taxpayer::getTaxMonth); taxpayers.sort(comparator);