1. 程式人生 > >java實現自定義排序(實現Comparable介面)

java實現自定義排序(實現Comparable介面)

        排序的演算法,大家都不陌生,有氣泡排序、選擇排序、插入排序,快速排序等等。如果現在有學生類,學校添加了很多學生,要你給學生按照學號大小排序,你會怎麼排? 學生類   Student {int stuID;    String stuName;   int score;     }

         咱們java功能很強大,庫裡自帶給陣列排序的方法Arrays.sort(); 來看看它的相關用法:        

         標頭檔案         import java.util.Arrays;                       

         相關API:Arrays.sort(arys[])

                         Arrays.sort(arys[],int from,int to) //排序範圍:from-->to-1

                          Arrays.sort(arys[],new MyComparator())

                         Arrays.sort(arys[],int from,int to,new MyComparator())

       Arrays.sort()方法可對任何實現compareble介面的物件陣列排序, 像Integer,String,這兩種引用型別都實現了compareble介面,所以這兩種型別的陣列都可直接使用Arrays.sort()進行排序。這裡我們看下api文件對compareble的描述:

public class Student implements Comparable<Student> {
    private  int stuId;
    private String stuName;
    private int score;

    public Student(int stuId, String stuName, int score) {
        this.stuId = stuId;
        this.stuName = stuName;
        this.score = score;
    }

    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public int compareTo(Student o) {
        return stuId-o.stuId;
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", score=" + score +
                '}';
    }
}

          咱們再建一個test類來測試下:

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        Student []students=new Student[]{
                new Student(2,"張三",90),
                new Student(3,"王老五",100),
                new Student(1,"李四",87),
                new Student(4,"小明",99)
        };

        Arrays.sort(students);
        for (Student student:students
             ) {
            System.out.println(student.toString());
        }
    }
}

效果如下: