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。