java實現自定義排序(實現Comparable介面)
阿新 • • 發佈:2019-01-29
排序的演算法,大家都不陌生,有氣泡排序、選擇排序、插入排序,快速排序等等。如果現在有學生類,學校添加了很多學生,要你給學生按照學號大小排序,你會怎麼排? 學生類 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());
}
}
}
效果如下: