您的位置:首页 > 编程语言 > Java开发

Java 根据自己需求重写排序方法

2015-04-15 12:47 375 查看
在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;
}
}
};
上面这个例子是按照两个条件进行的升序排列,如果要降序排列,换一下比较的顺序就行了。

如果是要按照两个以上条件进行排序,按照上面例子的逻辑进行细化排序就行了。

本文出自 “Java一样的少年” 博客,请务必保留此出处http://zhengjiang.blog.51cto.com/8568971/1632891
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: