在develop code 过程中,我们往往要根据需求对一组数据进行排序,当然frontend可以依靠js进行排序,这里要说的是在backend怎样进行排序:
在后端进行排序,我们需要用到Collections类的sort方法,如果只是对一组数字、字母排序,可以直接使用Collections.sort(List<?> list),默认是ASC升序。如果是对一组自己定义的复杂的数组排序,就要重写Comparator进行重写了。
看下面一个示例:
private final Comparator<T> idAsc = new Comparator<T>() {
@Override
public int compare(T t1, T t2) {
return (int)(t1.getId() - t2.getId());
}
};
这是一个按类T的id进行的升序排列,如果要降序排列,只需要换一下顺序进行了:
private final Comparator<T> idDesc = new Comparator<T>() {
@Override
public int compare(T t1, T t2) {
return (int)(t2.getId() - t1.getId());
}
};
使用方法:
Collections.sort(List<T> list, Comparator comparator);
上面的例子只是一个比较简单的自定义排序,但在现实过程当中,可能我们需要按照多个条件进行排序。看下面的例子:
先根据数量num排序,如果num相同再根据id进行排序
public final Comparator<T> numAndIdAsc = new Comparator<T>() {
@Override
public int compare(T t1, T t2) {
int numDiff= t1.getNumber() - t2.getNumber();
int idDiff= t1.getId() - t2.getId();
if(numDiff== 0) {
return idDiff;
} else {
if(idDiff < 0) return -1;
else return 1;
}
}
};
上面这个例子是按照两个条件进行的升序排列,如果要降序排列,换一下比较的顺序就行了。
如果是要按照两个以上条件进行排序,按照上面例子的逻辑进行细化排序就行了。