利用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());      

      }

        });

你可能感兴趣的:(利用Collections对某个集合进行排序)