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
在后端进行排序,我们需要用到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
相关文章推荐
- JAVA中根据集合中对象属性排序的方法
- 在TFileListBox的子类里重写ReadFileNames那个虚方法(见filectrl.pas),根据文件创建时间进行排序。
- JAVA中重写自己的hashCode()方法原因
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- java对List<Object>型列表进行排序(通过内部类对compare(**)方法重写)
- Java关于List<String> 进行排序,重写Comparator()方法
- Java 中根据用户需求按需排序的程序
- java根据List内对象的属性排序方法
- Java中对list map根据map某个key值进行排序的方法
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- Java排序方法
- js sort方法根据数组中对象的某一个属性值进行排序
- Java 关于重写compareTo方法
- 再探Java子类方法重写父类方法遵循“两同两小一大”规则
- Java基础---super关键字,方法重写 ,instanceof关键字
- Java根据对象中某个属性排序