利用Collections对某个集合进行排序
Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:
publicstatic>voidsort(List list) {
list.sort(null);
}
publicstaticvoidsort(List list, Comparator c) {
list.sort(c);
}
首先如果想利用Collections进行排序,那么该集合的对象必须是实现Comparator 接口。
第一种,默认是正序排列,如果要按照自己的规则进行排序;那就得用第二种,实现Comparator 接口,然后重写compareTo方法。
1)基本类型
直接用第二种类型
staticList intList = Arrays.asList(2, 3, 1);
Collections.sort(intList,newComparator() {
@Override
publicint compare(Integer o1, Integer o2) {
// 返回值为int类型,大于0表示正序,小于0表示逆序returno2-o1;
}
});
2)自定义类型
public class Emp implements Comparable{
/*属性、getter/setter方法、toString方法及构造方法略*/ @Override
publicint compareTo(Emp emp) {
/*按员工编号正序排序*/
//return this.getEmpno()-emp.getEmpno();
/*按员工编号逆序排序*/
//return emp.getEmpno()-this.getEmpno();
/*按员工姓名正序排序*/
//return this.getEname().compareTo(emp.getEname());
/*按员工姓名逆序排序*/
returnemp.getEname().compareTo(this.getEname());
}
}
使用Collections.sor方法的第一种形式实现:
Collections.sort(empList);
第二种:
Collections.sort(empList,newComparator() {
@Override
publicint compare(Emp o1, Emp o2) {
/*按员工编号正序排序*/
returno1.getEmpno()-o2.getEmpno();
/*按员工编号逆序排序*/
//return o2.getEmpno()-o1.getEmpno();
/*按员工姓名正序排序*/
//return o1.getEname().compareTo(o2.getEname());
/*按员工姓名逆序排序*/
//return o2.getEname().compareTo(o1.getEname());
}
});