第一种实现方式:javaBean实现Comparable接口,规定对象的存放规则
/**
* 第一种实现方式:javaBean实现Comparable接口,规定对象的存放规则
*
* 学生类
*/
public class Student implements Comparable<Student>{
/**
* 年龄
*/
private String name;
/**
* 性别
*/
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student s) {
// 按照年龄升序排序, 可先运行试试看, 看是不是自己想要的排序结果
return this.age - s.age;
}
}
Student s1 = new Student("张三", 25);
Student s2 = new Student("李四", 22);
Student s3 = new Student("王五", 44);
Student s4 = new Student("赵六", 15);
Student[] students = {s1, s2, s3, s4};
// Student类需要实现Comparable接口, 不然会报错
Arrays.sort(students);
System.out.println(Arrays.toString(students));
运行结果:对象按照年龄升序排序
第二种实现方式:使用Arrays.sort()方法时,用java.util里面的Comparator接口来定义排序规则
// 第二种实现方式:使用Arrays.sort()方法时,用java.util里面的Comparator接口来定义排序规则
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 按照年龄降序排序, 注意要提供对象的getAge()方法
return o2.getAge() - o1.getAge();
}
});
可用lambda表达式简化代码,换成这一行代码
Arrays.sort(students, (o1, o2) -> o2.getAge() - o1.getAge());
运行结果:对象按照年龄降序排序