1、java实现集合排序就两种方式
第一种:实体实现Comparable 接口,再 Collections.sort();
第二种:直接一点,
Collections.sort(students, new Comparator<Student>() {
public int compare(Student arg0, Student arg1) {
return arg0.getScore().compareTo(arg1.getScore());
}
});
详细一点,降序:
Collections.sort(students, new Comparator<Student>(){
* int compare(Student o1, Student o2) 返回一个基本类型的整型,
* 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等,
* 返回正数表示:o1大于o2。
public int compare(PerReportDTO o1, PerReportDTO o2) {
if(o1.getFinal_accord_pro() < o2.getFinal_accord_pro()){
return 1;
}
if(o1.getFinal_accord_pro() == o2.getFinal_accord_pro()){
return 0;
}
return -1;
}
});
当然还可以,多属性排序:
/**
* 对list的元素按照多个属性名称排序,
* list元素的属性可以是数字(byte、short、int、long、float、double等,支持正数、负数、0)、char、String、java.util.Date
*
*
* @param lsit
* @param sortname
* list元素的属性名称
* @param isAsc
* true升序,false降序
*/
public static <E> void sort(List<E> list, final boolean isAsc, final String... sortnameArr) {
Collections.sort(list, new Comparator<E>() {
public int compare(E a, E b) {
int ret = 0;
try {
for (int i = 0; i < sortnameArr.length; i++) {
ret = _listUtils.compareObject(sortnameArr[i], isAsc, a, b);
if (0 != ret) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
});
}
// 按userId升序、username降序、birthDate升序排序
String [] sortNameArr = {"userId","username","birthDate"};
boolean [] isAscArr = {true,false,true};
_listUtils.sort(list,sortNameArr,isAscArr);
System.out.println("\n--------按按userId升序、username降序、birthDate升序排序(如果userId相同,则按照username降序,如果username相同,则按照birthDate升序)------------------");
printfUserInfoList(list);
// 按userId、username、birthDate都升序排序
_listUtils.sort(list, true, "userId", "username","birthDate");
System.out.println("\n--------按userId、username、birthDate排序(如果userId相同,则按照username升序,如果username相同,则按照birthDate升序)------------------");
printfUserInfoList(list);
// 按userId、username都倒序排序
_listUtils.sort(list, false, "userId", "username");
System.out.println("\n--------按userId和username倒序(如果userId相同,则按照username倒序)------------------");
printfUserInfoList(list);
// 按username、birthDate都升序排序
_listUtils.sort(list, true, "username", "birthDate");
System.out.println("\n---------按username、birthDate升序(如果username相同,则按照birthDate升序)-----------------");
printfUserInfoList(list);
// 按birthDate倒序排序
_listUtils.sort(list, false, "birthDate");
System.out.println("\n---------按birthDate倒序-----------------");
printfUserInfoList(list);
// 按fRate升序排序
_listUtils.sort(list, true, "fRate");
System.out.println("\n---------按fRate升序-----------------");
printfUserInfoList(list);
// 按ch倒序排序
_listUtils.sort(list, false, "ch");
System.out.println("\n---------按ch倒序-----------------");
printfUserInfoList(list);
工具类下载地址:加QQ群494808400 在群文件->java工具类栏目中。
全CSDN的丰(好)色(se)博客,这里有书本看不到的Java技术,电影院禁播的电影,欢迎关注QQ群494808400