Java Reference
In-Depth Information
The Comparable Interface
The Comparable interface is in the java.lang package and so is automatically available
to your program. The Comparable interface has only the following method heading that
must be given a definition for a class to implement the Comparable interface:
public int compareTo(Object other);
The method compareTo should return
a negative number if the calling object “comes before” the parameter other ,
a zero if the calling object “equals” the parameter other ,
and a positive number if the calling object “comes after” the parameter other .
The “comes before” ordering that underlies compareTo should be a total ordering. Most
normal ordering, such as less-than ordering on numbers and lexicographic ordering on
strings, is total ordering.
If you define a class that implements the Comparable interface but that does not
satisfy these conditions, then code written for Comparable objects will not work
properly. It is the responsibility of you, the programmer, to ensure that the semantics is
satisfied. Neither the compiler nor the run-time system enforces any semantics on the
Comparable interface.
If you have read this subsection, you should also read the following Programming
Example.
EXAMPLE: Using the Comparable Interface
Display 13.5 shows a class with a method that can sort any partially filled array whose
base type implements the Comparable interface (including implementing the semantics
we discussed in the previous subsection). To obtain the code in Display 13.5, we started
with the sorting code in Display 6.11 and mechanically replaced all occurrences of the
array type double[] with the type Comparable[] . We replaced all Boolean expressions
of the form
Expression_1 < Expression_2
with
Expression_1 .compareTo( Expression_2 ) < 0
We also changed the comments a bit to make them consistent with the compareTo
notation. The changes are highlighted in Display 13.5. Only four small changes to
the code were needed.
(continued on page 722)
 
Search WWH ::




Custom Search