分享

java基础

 gideshi 2020-02-04

java基础——Collections.sort的两种用法

Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:

Java代码  收藏代码
  1. public static <T extends Comparable<? super T>> void sort(List<T> list) {  
  2.     list.sort(null);  
  3. }  

Java代码  收藏代码
  1. public static <T> void sort(List<T> list, Comparator<? super T> c) {  
  2.     list.sort(c);  
  3. }  


    首先使用基本类型(此处使用Integer)来演示第一个方法:
Java代码  收藏代码
  1. static List<Integer> intList = Arrays.asList(2, 3, 1);  
  2. //正序   
  3. Collections.sort(intList);  
  4. //倒叙  
  5. Collections.sort(intList,new Comparator<Integer>() {  
  6.         @Override  
  7.         public int compare(Integer o1, Integer o2) {  
  8.             // 返回值为int类型,大于0表示正序,小于0表示逆序  
  9.             return o2-o1;  
  10.         }  
  11.  });  


    接下来看看自定义类的排序:

Java代码  收藏代码
  1. public class Emp{  
  2.     private int empno;  
  3.     private String ename;  
  4.     public int getEmpno() {  
  5.         return empno;  
  6.     }  
  7.     public void setEmpno(int empno) {  
  8.         this.empno = empno;  
  9.     }  
  10.     public String getEname() {  
  11.         return ename;  
  12.     }  
  13.     public void setEname(String ename) {  
  14.         this.ename = ename;  
  15.     }  
  16.       
  17.     public Emp(int empno, String ename) {  
  18.         super();  
  19.         this.empno = empno;  
  20.         this.ename = ename;  
  21.     }  
  22.     @Override  
  23.     public String toString()  
  24.     {  
  25.         return "empno:\t"+empno+"\tename:\t"+ename;  
  26.     }  
  27. }  


   
Java代码  收藏代码
  1. //定义的list  
  2. static List<Emp> empList;  
  3. static   
  4. {  
  5.     Emp emp1 = new Emp(2,"Guan YunChang");  
  6.     Emp emp2 = new Emp(3,"Zhang Fei");  
  7.     Emp emp3 = new Emp(1,"Liu Bei");  
  8.     empList = Arrays.asList(emp1,emp2,emp3);  
  9. }  
  10.   
  11. //实现排序的方法  
  12. Collections.sort(empList,new Comparator<Emp>() {  
  13.         @Override  
  14.         public int compare(Emp o1, Emp o2) {  
  15.             /*按员工编号正序排序*/  
  16.             return o1.getEmpno()-o2.getEmpno();  
  17.             /*按员工编号逆序排序*/  
  18.             //return o2.getEmpno()-o1.getEmpno();  
  19.             /*按员工姓名正序排序*/  
  20.             //return o1.getEname().compareTo(o2.getEname());  
  21.             /*按员工姓名逆序排序*/  
  22.             //return o2.getEname().compareTo(o1.getEname());  
  23.         }  
  24.  });  


    如果直接使用 Collections.sort(empList);需要在Emp类中实现Comparator接口
Java代码  收藏代码
  1. public class Emp implements Comparable<Emp>{  
  2.     private int empno;  
  3.     private String ename;  
  4.     public int getEmpno() {  
  5.         return empno;  
  6.     }  
  7.     public void setEmpno(int empno) {  
  8.         this.empno = empno;  
  9.     }  
  10.     public String getEname() {  
  11.         return ename;  
  12.     }  
  13.     public void setEname(String ename) {  
  14.         this.ename = ename;  
  15.     }  
  16.       
  17.     public Emp(int empno, String ename) {  
  18.         super();  
  19.         this.empno = empno;  
  20.         this.ename = ename;  
  21.     }  
  22.     @Override  
  23.     public String toString()  
  24.     {  
  25.         return "empno:\t"+empno+"\tename:\t"+ename;  
  26.     }  
  27.   
  28.     @Override  
  29.     public int compareTo(Emp emp) {  
  30.         /*按员工编号正序排序*/  
  31.         //return this.getEmpno()-emp.getEmpno();  
  32.         /*按员工编号逆序排序*/  
  33.         //return emp.getEmpno()-this.getEmpno();  
  34.         /*按员工姓名正序排序*/  
  35.         //return this.getEname().compareTo(emp.getEname());  
  36.         /*按员工姓名逆序排序*/  
  37.         return emp.getEname().compareTo(this.getEname());  
  38.     }  
  39.    }  


使用Collections.sort方法的第一种形式实现:
Java代码  收藏代码
  1. Collections.sort(empList);  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多