下面是详细讲解“Java 实现使用 Comparable 按照我们指定的规则排序”的攻略:
一、使用 Comparable 接口
Comparable 接口是 Java 中的一个接口,它有一个 compareTo 方法,用于指定对象排序的规则。如果一个类实现了 Comparable 接口,就可以使用 Collections.sort 或 Arrays.sort 方法对其进行排序。
下面是一个实现 Comparable 接口的示例:
public class Student implements Comparable<Student> {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public int compareTo(Student o) {
return this.age - o.getAge();
}
}
Student 类实现了 Comparable
List<Student> list = new ArrayList<>();
list.add(new Student("Tom", 18));
list.add(new Student("Lucy", 28));
list.add(new Student("Jack", 23));
Collections.sort(list);
for (Student s : list) {
System.out.println(s.getName() + " " + s.getAge());
}
输出结果:
Tom 18
Jack 23
Lucy 28
二、使用 Comparator 接口
如果一个类无法实现 Comparable 接口,或者想要对一个已经实现了 Comparable 接口的类进行更多的排序规则,就可以使用 Comparator 接口。Comparator 接口有一个 compare 方法,用于指定对象之间的排序规则。
下面是一个 Comparator 接口的示例:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class AgeComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
}
AgeComparator 实现了 Comparator
List<Student> list = new ArrayList<>();
list.add(new Student("Tom", 18));
list.add(new Student("Lucy", 28));
list.add(new Student("Jack", 23));
Collections.sort(list, new AgeComparator());
for (Student s : list) {
System.out.println(s.getName() + " " + s.getAge());
}
输出结果:
Tom 18
Jack 23
Lucy 28
以上就是使用 Comparable 和 Comparator 接口实现按照指定规则排序的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 实现使用Comparable按照我们指定的规则排序 - Python技术站