如果你在 Comparable
接口的类中看到 compareTo()
方法没有实际的实现,这通常是因为它是一个抽象方法,需要在实现 Comparable
接口的具体类中进行重写。这个方法的目的: 是让类的实例能够进行比较,以便在集合类中进行排序或者其他需要比较对象顺序的操作。
我会在下一期博客中提到什么情况下需要我们进行重写,若是看完本篇博客还未理解的朋友可以关注一下,下一篇 博客方法一定要被重写的四种情况 - 掘金 (juejin.cn)
让我们来看一个示例,假设有一个 Person
类实现了 Comparable
接口,我们想要通过年龄来比较这些人:
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 Integer.compare(this.age, other.age);
}
}
在这个例子中,compareTo
方法被重写,根据 Person
对象的年龄来比较它们。这里使用了 Integer.compare
方法来比较整数值,它返回一个负数、零或者正数,分别表示当前对象小于、等于或者大于传入对象。
使用这种实现方式,你可以通过年龄来比较 Person
对象,例如在集合中进行排序:
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
Collections.sort(people); //排序
for (Person person : people) {
System.out.println(person.getName() + " : " + person.getAge());
}
在上述代码中,Collections.sort(people)
使用了 compareTo
方法来对 people
列表中的 Person
对象进行排序,输出结果将按年龄升序排列。