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

java集合排序

2017-07-20 09:22 190 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: