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 比较 thisother,而 compare 比较 t1t2,而不关心 this

除了这种差异,这两种方法也有类似的要求。具体而言(对于 compareTo),将此对象与指定的对象进行比较以获得顺序。返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。 因此,对于 ab 的比较:

  • 如果 a < ba.compareTo(b)compare(a,b) 应该返回一个负整数,b.compareTo(a)compare(b,a) 应该返回一个正整数
  • 如果 a > ba.compareTo(b)compare(a,b) 应该返回一个正整数,b.compareTo(a)compare(b,a) 应该返回一个负整数
  • 如果 a 等于 b 进行比较,则所有比较都应返回 0