...
The implementor must ensure
sgn(x.compareTo(y)) == -sgn(y.compareTo(x))for all x and y. (This implies thatx.compareTo(y)must throw an exception iffy.compareTo(x)throws an exception.)The implementor must also ensure that the relation is transitive:
(x.compareTo(y) >0 > 0 && y.compareTo(z) >0> 0)impliesx.compareTo(z) >0> 0.Finally, the implementor must ensure that
x.compareTo(y) == 0implies thatsgn(x.compareTo(z)) == sgn(y.compareTo(z)), for allz.It is strongly recommended, but not strictly required that
(x.compareTo(y) == 0) == ( x.equals(y) ). Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals."In the foregoing description, the notation
sgn(expression)designates the mathematical signum function, which is defined to return either -1, 0, or 1 depending on whether the value of the expression is negative, zero or positive.
...