一,比较器基本使用
当我们使用Arrays.sort(Object[] a)对对象数组进行排序时,该对象所在的类必须实现Comparable接口,这个接口用于指定对象的排序规则。
在Comparable接口中是用泛型定义的,因此子类需要实现特定的类在Comparable接口中只有一个
compareTo方法,该方法返回一个int类型。
在这个方法中只能返回三个int类型的值:1,-1,0
例如设置一个学生的类,按照学生的年龄进行排序。
public class Student implements Comparable<Student>{
private int age;
private String name;
public Student(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
@Override
public int compareTo(Student o) {
if(this.age>o.age){
return 1;
}else if(this.age<o.age){
return -1;
}else {
return 0;
}
}
public static void main(String[] args) {
Student[] students = new Student[3];
students[0] = new Student(18,"XiaoMing");
students[1] = new Student(20,"XiaoHong");
students[2] = new Student(19,"XiaoLi");
for (Student student : students) {
System.out.println(student);
}
Arrays.sort(students);
System.out.println();
for (Student student : students) {
System.out.println(student);
}
}
}
输出结果:
Student{age=18, name='XiaoMing'}
Student{age=20, name='XiaoHong'}
Student{age=19, name='XiaoLi'}
Student{age=18, name='XiaoMing'}
Student{age=19, name='XiaoLi'}
Student{age=20, name='XiaoHong'}