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
。