The ordering of a tree set in Java can be dictated using implementations of either the
Comparator interface. For example, we might want to build a set of integers that we wish to store in numerical order. Such an ordering is considered a "natural order" in Java. Natural ordering can be accomplished by storing items that belong to a class type that implements the
Comparable interface. The
Integer class, for instance, implements this interface. Therefore, integer variables that are stored in a set are automatically placed in numerical order. The
Comparable interface specifies one method,
compareTo, that determines how the objects are to be sequenced. This method returns a negative integer, zero, or positive integer to indicate the current object is less than, equal to, or greater than the object passed to method. For example, consider a garden tools class that has two properties: SKU and description. The natural order might be to store the tools in ascending SKU sequence.
If you want to sequence the set in a different order, you can use the
Comparator interface. This interface contains one method;
compare. For example, we might want to build a set that stores garden tools in ascending description order. Rather than modify the
compareTo method (and potentially upset applications that rely on that sequence), we can build a separate class that implements the
To learn how to use the
Comparator interfaces, follow these seven steps.
Comparable. The class therefore must implement the
compareTomethod. Also notice the presence of an
equalsmethod. In Java, a set cannot have duplicates. The
equalsmethod is called when an object is added to a set to determine if an equivalent object already exists on the set.
Comparator. In your text editor, type in the following Java statements:
Integerclass implements the
Comparableinterface and therefore the integers will be stored in a natural order, i.e., 1, 2, 3. The next set (created at line 15) stores
GardenToolobjects. As noted earlier, the
Comparableand specifies an order of SKU in the
compareTomethod. The final set is created with a
Comparatorimplementation passed to the constructor (line 24). The implementation class,
GardenToolComparator, is contained in the source code. The
comparemethod dictates that objects will be sequenced in description order.