方式一:让该对象的类实现Comparable(比较规则)接口,然后重写compareTo方法,自己来制定比较规则
// 实体类
public class Student implements Comparable<Student>{
private String name;
private char sex;
private double score;
public Student() {
}
@Override
public int compareTo(Student o) {
// 升序 正整数
// 降序 负整数
// == 0
if(this.score - o.getScore() > 0) {
return 1;
}else if(this.score - o.getScore() < 0){
return -1;
}
return 0;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", sex=" + sex +
", score=" + score +
'}';
}
public Student(String name, char sex, double score) {
this.name = name;
this.sex = sex;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
// main
public static void main(String[] args) {
Student[] students = new Student[3];
students[0] = new Student("李子彬1",'男',100);
students[1] = new Student("李子彬2",'男',66);
students[2] = new Student("李子彬3",'男',88.2);
Arrays.sort(students);
System.out.println(Arrays.toString(students));
}
方式二:使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,然后制定比较规则
public static void main(String[] args) {
Student[] students = new Student[3];
students[0] = new Student("李子彬1",'男',100);
students[1] = new Student("李子彬2",'男',66);
students[2] = new Student("李子彬3",'男',88.2);
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return Double.compare(o2.getScore(),o1.getScore());
}
});
System.out.println(Arrays.toString(students));
}