jdk源码之Comparable
一、源码
public interface Comparable<T> {
public int compareTo(T o);
}
二、接口介绍
这种排序被称为类的自然排序,而类的compareTo方法被称为它的自然比较方法。
实现此接口的对象列表(和数组)可以通过Collections.sort、Arrays.sort自动排序。
三、compareTo方法介绍
- 将此对象与指定的对象进行比较以进行排序。当此对象小于、等于或大于指定对象时,返回一个负整数、零或正整数。
- 实现者必须确保对于所有 x 和 y sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 。 (这意味着 如果 y.compareTo(x) 抛出异常,x.compareTo(y) 必须抛出异常。)
- 实现者还必须确保关系是可传递的: (x.compareTo(y)>0 && y.compareTo(z)>0)表示x.compareTo(z)>0 。
- 最后,实现者必须确保x.compareTo(y)==0。意味着sgn(x.compareTo(z)) == sgn(y.compareTo(z)),对于所有的z。
- 强烈建议,但不要严格要求(x.compareTo(y)==0) == (x.equals(y)) 。 一般来说,任何实现Comparable接口并违反这种情况的类应清楚地表明这一点。 推荐的语言是“注意:此类具有与equals不一致的自然排序”。
- 在前面的描述中,符号sgn( ) 表达式表示数学符号函数,其定义根据表达式的值是否为负,零或正返回的-1,0,或1。