compareTo 和比较方法
Comparable<T> 接口需要一种方法:
public interface Comparable<T> {
public int compareTo(T other);
}
而 Comparator<T> 接口需要一种方法:
public interface Comparator<T> {
public int compare(T t1, T t2);
}
这两种方法基本上是相同的,只有一个小的区别:compareTo 比较 this 和 other,而 compare 比较 t1 和 t2,而不关心 this。
除了这种差异,这两种方法也有类似的要求。具体而言(对于 compareTo),将此对象与指定的对象进行比较以获得顺序。返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。 因此,对于 a 和 b 的比较:
- 如果
a < b,a.compareTo(b)和compare(a,b)应该返回一个负整数,b.compareTo(a)和compare(b,a)应该返回一个正整数 - 如果
a > b,a.compareTo(b)和compare(a,b)应该返回一个正整数,b.compareTo(a)和compare(b,a)应该返回一个负整数 - 如果
a等于b进行比较,则所有比较都应返回0。