| Next page | Contents page |

To be able to do a binary search or sort a collection of data, the objects must have an ordering. To ensure a natural ordering:

class X implements Comparable<T>

ensures `X`

has the method `int compareTo (T other)`

which returns <0, 0, or >0 (this object precedes, equals or follows `other`

).

`java.lang.String`

does implement `Comparable<String>`

`compareTo ()`

must be written such that

`(x.compareTo (y) > 0 && y.compareTo (z) > 0) => x.compareTo (z) > 0`

(transitivity)`x.compareTo(y) == 0 => sign (x.compareTo(z)) == sign (y.compareTo(z))`

, for all z`(x.compareTo (y) == 0) <=> (x.equals (y))`

This interface is for when you want to sort objects in different ways on different occasions (eg, customers sorted by name or order number). Implement this interface in order to construct `Comparator`

objects for passing into search/sort methods.

Two methods in the interface:

int compare (T obj1, T obj2)
boolean equals (Object obj)

NB: The latter is for testing whether two `Comparator`

s are equal.

Library implementations are `java.text.Collator`

and its subclass `java.text.RuleBasedCollator`

which are useful in localisation.

| Next page | Contents page |