Java basics - two uses of Collections.sort

Collections is a tool class, and sort is a static method in it, which is used to sort the List type. It has two parameter forms:

    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);
    }


    Let's first demonstrate the first method using a primitive type (Integer here):
    static List<Integer> intList = Arrays.asList(2, 3, 1);
    // positive sequence
    Collections.sort(intList);
    //flashback
    Collections.sort(intList,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // The return value is int type, greater than 0 means positive order, less than 0 means reverse order
                return o2-o1;
            }
     });


    Next, look at the sorting of custom classes:

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;
    }
}


   
    //Defined 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);
    }
    
    // method to implement sorting
    Collections.sort(empList,new Comparator<Emp>() {
            @Override
            public int compare(Emp o1, Emp o2) {
                /* Sort by employee number in positive order*/
                return o1.getEmpno()-o2.getEmpno();
                /* sort by employee number in reverse order */
                // return o2.getEmpno()-o1.getEmpno();
                /* Sort by employee name in positive order */
                //return o1.getEname().compareTo(o2.getEname());
                /* sort by employee name in reverse order */
                //return o2.getEname().compareTo(o1.getEname());
            }
     });



    If you use Collections.sort(empList) directly; you need to implement the Comparator interface in the Emp class
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) {
        /* Sort by employee number in positive order*/
        //return this.getEmpno()-emp.getEmpno();
        /* sort by employee number in reverse order */
        //return emp.getEmpno()-this.getEmpno();
        /* Sort by employee name in positive order */
        //return this.getEname().compareTo(emp.getEname());
        /* sort by employee name in reverse order */
        return emp.getEname().compareTo(this.getEname());
    }
   }


Implemented using the first form of the Collections.sort method:
Collections.sort(empList);

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326026175&siteId=291194637
Recommended