java.lang.Object | +--java.lang.Comparable
int | compareTo(java.lang.Object o) Compares this object with another, and returns a numerical result based on the comparison. |
public int compareTo(java.lang.Object o)
o1.compareTo(o2) <op> 0
, where op
is one of <, <=, =, !=, >, or >=.
You must make sure that the comparison is mutual, ie.
sgn(x.compareTo(y)) == -sgn(y.compareTo(x))
(where sgn() is
defined as -1, 0, or 1 based on the sign). This includes throwing an
exception in either direction if the two are not comparable; hence,
compareTo(null)
should always throw an Exception.
You should also ensure transitivity, in two forms:
x.compareTo(y) > 0 && y.compareTo(z) > 0
implies
x.compareTo(z) > 0
; and x.compareTo(y) == 0
implies x.compareTo(z) == y.compareTo(z)
.
o
- the object to be comparedNullPointerException
- if o is nullClassCastException
- if o cannot be compared
Lists, arrays, and sets of objects that implement this interface can be sorted automatically, without the need for an explicit Comparator. Note that
e1.compareTo(null)
should throw an Exception; as should comparison between incompatible classes.