...
Wiki Markup |
---|
The general usage contract for {{compareTo()}} from Java SE 6 API \[[API 2006|AA. Java References#APIBibliography#API 06]\] states that: |
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 && y.compareTo(z)>0)
impliesx.compareTo(z)>0
.Finally, the implementor must ensure that
x.compareTo(y) ==0
implies 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.
...
Wiki Markup |
---|
\[[API 2006|AA. Java References#APIBibliography#API 06]\] method [compareTo()|http://java.sun.com/javase/6/docs/api/java/lang/Comparable.html#compareTo(java.lang.Object)] \[[JLS 2005|AA. Java References#JLSBibliography#JLS 05]\] |
...
MET13-J. Ensure that hashCode() is overridden when equals() is overridden 16. Methods (MET) MET15-J. Do not use deprecated or obsolete methods