public class Student implements Comparable<Student> {
private String name = "";
private int score = 0;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int compareTo(Student o) {
return this.score - o.score;
}
}
import java.util.Arrays;
public class TestMain {
public static void main(String[] args) {
Student st1 = new Student("st1", 85);
Student st2 = new Student("st2", 80);
Student st3 = new Student("st3", 90);
Student[] stList = new Student[3];
stList[0] = st1;
stList[1] = st2;
stList[2] = st3;
Arrays.sort(stList);
for (Student st : stList) {
System.out.println(st.getScore());
System.out.println(st.getName());
}
}
}
80
st2
85
st1
90
st3
如果没有实现 Comparable<T> 则会报错
Exception in thread "main" java.lang.ClassCastException: com.busy.Student cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
at java.util.Arrays.sort(Arrays.java:1246)
at com.busy.TestMain.main(TestMain.java:15)
Process finished with exit code 1