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
。