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。