Java的Collection.sort()方法

   Java中的Collection.sort()方法能使用泛型对对象的变量进行排序,下面是两种方法。

文件名:student.java

import java.util.*;

import com.sun.org.apache.xerces.internal.dom.ProcessingInstructionImpl;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections;

public class Student implements Comparable<Student>{

    private int id;
    private String name;
    
    public Student(String setname,int id) {
        this.id=id;
        this.name=setname;
    }
    
    
    public int getId() {
        return id;
    }




    public void setId(int id) {
        this.id = id;
    }




    public String getName() {
        return name;
    }




    public void setName(String name) {
        this.name = name;
    }




    @Override
    public int compareTo(Student stu) {
    /*    重写compareTo方法1 Compare排序接口
     * id升序排序
        if(this.id>stu.id) {
            return 1;
        }
        else if (this.id<stu.id) {
            return -1;
        }
        else {
            return 0;
        }
        或者return this.getId-stu.getId;
        */
        
        //名字升序排序
        return this.getName().compareTo(stu.getName());
    }
    

}

  这个文件主要是定义一个学生类,如果使用Compare排序接口算法,就要在实体类中重写compare方法,能实现对name和id进行升序和降序排序。

文件名:drive.java

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;


public class drive {
    public static void main(String[] args){
        ArrayList<Student> studentlist=new ArrayList<Student>();
        Student stu1  = new Student("zhangsan",12);
        Student stu2  = new Student("lisi",4);
        Student stu3 = new Student("wangwu", 5);
        studentlist.add(stu1);
        studentlist.add(stu2);
        studentlist.add(stu3);
        Collections.sort(studentlist);
        System.out.println(studentlist.get(0).getName());
        System.out.println(studentlist.get(1).getName());
        System.out.println(studentlist.get(2).getName());
        
        
        //方法2,compare比较器接口
        ArrayList<Student> studentlist2=new ArrayList<Student>();
        Student stu4=new Student("Tom", 13);
        Student stu5=new Student("Susan", 4);
        Student stu6=new Student("Puse", 41);
        studentlist2.add(stu4);
        studentlist2.add(stu5);
        studentlist2.add(stu6);
        Collections.sort(studentlist2, new Comparator<Student>() {
            public int compare(Student a,Student b) {
                //return a.getId()-b.getId();升序排序
                //降序排序
                return b.getId()-a.getId();
            }
        });
            System.out.println(studentlist2.get(0).getId());
            System.out.println(studentlist2.get(1).getId());
            System.out.println(studentlist2.get(2).getId());

    }
}

  这里使用了方法2的compare比较器接口,可以在main函数中进行排序,运行结果如下

  如图,实现了排序

posted @ 2018-04-10 23:03  Mugglean  阅读(1567)  评论(0编辑  收藏  举报