Comparable和Comparator接口是什么?
Comparable
和 Comparator
是 Java 中用于对象排序的两个接口。
Comparable
接口用于定义对象的自然排序。实现了这个接口的类需要重写 compareTo(T o)
方法,该方法用于比较当前对象与指定对象的顺序。
compareTo
方法,因此只能有一种自然排序方式。public int compareTo(T o);
返回值:
public class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person other) {
return this.age - other.age; // 按年龄升序排序
}
}
Comparator
接口用于定义对象的自定义排序。它可以用于对不同的类或同一类的不同排序方式进行比较。实现了这个接口的类需要重写 compare(T o1, T o2)
方法。
public int compare(T o1, T o2);
返回值:
import java.util.Comparator;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge(); // 按年龄升序排序
}
}
class NameComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName()); // 按名字升序排序
}
}
Comparable
接口时,类本身定义了自然排序。Comparator
接口时,可以在外部定义多种排序方式,适用于需要多种排序标准的情况。