java.lang

Interface Comparable<T>

public interface Comparable<T>

Interface for objects that can be ordering among other objects. The ordering can be total, such that two objects only compare equal if they are also equal by the equals method, or partial such that this is not necessarily true. For example, a case-sensitive dictionary order comparison of Strings is total, but if it is case-insensitive it is partial, because "abc" and "ABC" compare as equal even though "abc".equals("ABC") returns false. However, if you use a partial ordering, it is a good idea to document your class as "inconsistent with equals", because the behavior of your class in a SortedMap will be different than in a HashMap.

Lists, arrays, and sets of objects that implement this interface can be sorted automatically, without the need for an explicit {@link java.util.Comparator}. Note that e1.compareTo(null) should throw an Exception; as should comparison between incompatible classes.

Since: 1.2

See Also: Comparator sort (Object[]) SortedSet SortedMap TreeSet TreeMap

UNKNOWN: updated to 1.5

Method Summary
intcompareTo(T o)
Compares this object with another, and returns a numerical result based on the comparison.

Method Detail

compareTo

public int compareTo(T o)
Compares this object with another, and returns a numerical result based on the comparison. If the result is negative, this object sorts less than the other; if 0, the two are equal, and if positive, this object sorts greater than the other. To translate this into boolean, simply perform 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).

Parameters: o the object to be compared

Returns: an integer describing the comparison

Throws: NullPointerException if o is null ClassCastException if o cannot be compared