需求场景:
应用中我们不仅需要比较基本数据类型,对基本数据类型进行排序。有时还需要比较我们自定义的类,对我们自定义的类进行排序。这时就需要在我们写一个针对我们自定义类的比较器类了(否则比较的是对象的地址)。
实现:
- 实现Comparator接口
- 重写compare方法,返回负数表示第一个参数比第二个参数大,正数表示小,0表示相等
public class GradeCompare implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
//返回负数表示第一个参数比第二个参数大,正数表示小,0表示相等
return o1.grade - o2.grade;
}
}
应用
在Array.sort()中传入我们自定义的比较器实例,格式为Array.sort(待排序的数组,自定义的比较器实例)
public static void main(String[] args) {
Student s1 = new Student("A",90);
Student s2 = new Student("B",80);
Student s3 = new Student("c",98);
Student[] s = {s1, s2, s3};
Arrays.sort(s, new GradeCompare());
//student数组输出方法
printStudentArray(s);
}
输出为:
图片.png