How to Use Comparable and Comparator in Java
See Java: Tips and Tricks for similar articles.The ordering of a tree set in Java can be dictated using implementations of either the Comparable
or 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 Comparator
interface.
To learn how to use the Comparable
and Comparator
interfaces, follow these seven steps.
- Open your text editor and type in the following Java statements:
Notice that the class implements
Comparable
. The class therefore must implement thecompareTo
method. Also notice the presence of anequals
method. In Java, a set cannot have duplicates. Theequals
method is called when an object is added to a set to determine if an equivalent object already exists on the set. - Save your file as GardenTool.java.
- Open a command prompt and navigate to the directory containing your Java program. Then type in the command to compile the source and hit Enter.
- Next you will create the program to create various sets using
Comparable
andComparator
. In your text editor, type in the following Java statements:The program creates three tree sets. The first set stores integers (line 5). The
Integer
class implements theComparable
interface and therefore the integers will be stored in a natural order, i.e., 1, 2, 3. The next set (created at line 15) storesGardenTool
objects. As noted earlier, theGardenTool
class implementsComparable
and specifies an order of SKU in thecompareTo
method. The final set is created with aComparator
implementation passed to the constructor (line 24). The implementation class,GardenToolComparator
, is contained in the source code. Thecompare
method dictates that objects will be sequenced in description order. - Save your file as UseComparableAndComparator.java.
- Open a command prompt and navigate to the directory containing your Java program. Then type in the command to compile the source and hit Enter.
- Type in the command to run your program and hit Enter.
Notice in the output that the integer set is listed in ascending numerical sequence. The next set is listed in SKU sequence, and the final set of garden tools is listed in description order.
Related Articles
- How to Check Object Type in Java
- How to Create a Jar File in Java
- How to Compile Packages in Java
- How to Throw an Exception in Java
- How to Create an Exception Class in Java
- How to Use the super Keyword to Call a Base Class Constructor in Java
- How to Use the Comparator.comparing Method in Java 8
- How to Use System.in in Java
- How to Call an Interface Method in Java
- How to Add a Time Zone in the Java 8 Date/Time API
- How to Rethrow an Exception in Java
- How to Use the instanceof Operator with a Generic Class in Java
- How to Instantiate an Object in Java
- How to Filter Distinct Elements from a Collection in Java 8
- How to Create a Derived Class in Java
- How to Skip Elements with the Skip Method in Java 8
- How to Create a Java Bean
- How to Implement an Interface in Java
- How to Compare Two Objects with the equals Method in Java
- How to Set PATH from JAVA_HOME
- How to Prevent Race Conditions in Java 8
- How to Write a Block of Code in Java
- How to Display the Contents of a Directory in Java
- How to Group and Partition Collectors in Java 8
- How to Create a Reference to an Object in Java
- How to Reduce the Size of the Stream with the Limit Method in Java 8
- How to Write an Arithmetic Expression in Java
- How to Format Date and Time in the Java 8 Date/Time API
- How to Use Comparable and Comparator in Java (this article)
- How to Break a Loop in Java
- How to Use the this Keyword to Call Another Constructor in Java
- How to Write a Unit Test in Java
- How to Declare Variables in Java
- How to Override Base Class Methods with Derived Class Methods in Java
- How to Use Serialized Objects in Java
- How to Write Comments in Java
- How to Implement Functional Interfaces in Java 8
- How to Write Type Parameters with Multiple Bounds in Java
- How to Add Type and Repeating Annotations to Code in Java 8
- How to Use Basic Generics Syntax in Java
- How to Map Elements Using the Map Method in Java 8
- How to Work with Properties in Java
- How to Write while and do while Loops in Java
- How to Use the finally Block in Java
- How to Write for-each Loops in Java
- How to Create a Method in Java
- How to Continue a Loop in Java
- How to Handle Java Files with Streams
- How to Create an Interface Definition in Java
- How Default Base Class Constructors Are Used with Inheritance