java基础——Collections.sort的两种用法
Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:
- public static <T extends Comparable<? super T>> void sort(List<T> list) {
- list.sort(null);
- }
- public static <T> void sort(List<T> list, Comparator<? super T> c) {
- list.sort(c);
- }
首先使用基本类型(此处使用Integer)来演示第一个方法:
- static List<Integer> intList = Arrays.asList(2, 3, 1);
- //正序
- Collections.sort(intList);
- //倒叙
- Collections.sort(intList,new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- // 返回值为int类型,大于0表示正序,小于0表示逆序
- return o2-o1;
- }
- });
接下来看看自定义类的排序:
- public class Emp{
- private int empno;
- private String ename;
- public int getEmpno() {
- return empno;
- }
- public void setEmpno(int empno) {
- this.empno = empno;
- }
- public String getEname() {
- return ename;
- }
- public void setEname(String ename) {
- this.ename = ename;
- }
-
- public Emp(int empno, String ename) {
- super();
- this.empno = empno;
- this.ename = ename;
- }
- @Override
- public String toString()
- {
- return "empno:\t"+empno+"\tename:\t"+ename;
- }
- }
- //定义的list
- static List<Emp> empList;
- static
- {
- Emp emp1 = new Emp(2,"Guan YunChang");
- Emp emp2 = new Emp(3,"Zhang Fei");
- Emp emp3 = new Emp(1,"Liu Bei");
- empList = Arrays.asList(emp1,emp2,emp3);
- }
-
- //实现排序的方法
- Collections.sort(empList,new Comparator<Emp>() {
- @Override
- public int compare(Emp o1, Emp o2) {
- /*按员工编号正序排序*/
- return o1.getEmpno()-o2.getEmpno();
- /*按员工编号逆序排序*/
- //return o2.getEmpno()-o1.getEmpno();
- /*按员工姓名正序排序*/
- //return o1.getEname().compareTo(o2.getEname());
- /*按员工姓名逆序排序*/
- //return o2.getEname().compareTo(o1.getEname());
- }
- });
如果直接使用 Collections.sort(empList);需要在Emp类中实现Comparator接口
- public class Emp implements Comparable<Emp>{
- private int empno;
- private String ename;
- public int getEmpno() {
- return empno;
- }
- public void setEmpno(int empno) {
- this.empno = empno;
- }
- public String getEname() {
- return ename;
- }
- public void setEname(String ename) {
- this.ename = ename;
- }
-
- public Emp(int empno, String ename) {
- super();
- this.empno = empno;
- this.ename = ename;
- }
- @Override
- public String toString()
- {
- return "empno:\t"+empno+"\tename:\t"+ename;
- }
-
- @Override
- public int compareTo(Emp emp) {
- /*按员工编号正序排序*/
- //return this.getEmpno()-emp.getEmpno();
- /*按员工编号逆序排序*/
- //return emp.getEmpno()-this.getEmpno();
- /*按员工姓名正序排序*/
- //return this.getEname().compareTo(emp.getEname());
- /*按员工姓名逆序排序*/
- return emp.getEname().compareTo(this.getEname());
- }
- }
使用Collections.sort方法的第一种形式实现:
- Collections.sort(empList);
|