原理分析
当我们想排序一个自定义的数组,Java又没有直接提供它们的比较方式时。我们可以 通过实现接口Comparable并重写compareTo()方法来添加对自定义数组的比较,然后通过Arrays的sort()方法来将这个数组排序。这样就可以快速完成你所需要的排序了。有些同学就要问了:为什么重写了compareTo()方法就可以通过Arrays.sort()来进行排序了,我们可以通过源码来解释:
我们从源码可以看到调用Arrays.sort()最后会通过Comparable接口的compareTo()对数组进行比较排序
具体实现
package com.example.demo;
import java.util.Arrays;
public class Coming {
public static void main(String[] args){
Student[] s=new Student[5];
s[0]=new Student(0,"a",60);
s[1]=new Student(1,"b",40);
s[2]=new Student(2,"c",80);
s[3]=new Student(3,"d",55);
s[4]=new Student(4,"e",12);
Arrays.sort(s);
for (Student ss:s) {
System.out.println(ss);
}
}
public static class Student implements Comparable<Student>{
private Integer id;
private String name;
private Integer grade;
public Student(Integer id, String name, Integer grade) {
this.id = id;
this.name = name;
this.grade = grade;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getGrade() {
return grade;
}
public void setGrade(Integer grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", grade=" + grade +
'}';
}
@Override
public int compareTo(Student o) {
return (this.getGrade()>o.getGrade())?1:-1;
}
}
}
最后的运行结果为: