org.apache.commons.collections4.comparators

## Class ComparableComparator<E extends Comparable<? super E>>

- java.lang.Object
- - org.apache.commons.collections4.comparators.ComparableComparator<E>

- All Implemented Interfaces:
    Serializable, Comparator<E>

      public class ComparableComparator<E extends Comparable<? super E>>
      extends Object
      implements Comparator<E>, Serializable

  A `Comparator` that compares `Comparable` objects.

  This Comparator is useful, for example, for enforcing the natural order in custom implementations of `SortedSet` and `SortedMap`.

  Note: In the 2.0 and 2.1 releases of Commons Collections, this class would throw a `ClassCastException` if either of the arguments to `compare` were `null`, not `Comparable`, or for which `compareTo` gave inconsistent results. This is no longer the case. See `compare` for details.

  Since:
    2.0
  Version:
    $Id: ComparableComparator.java 1683951 2015-06-06 20:19:03Z tn $
  See Also:
    `Collections.reverseOrder()`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static ComparableComparator` | `INSTANCE` The singleton instance.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ComparableComparator()` Constructor whose use should be avoided.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static <E extends Comparable<? super E>> ComparableComparator<E>` | `comparableComparator()` Gets the singleton instance of a ComparableComparator.
    `int` | `compare(E obj1, E obj2)` Compare the two `Comparable` arguments.
    `boolean` | `equals(Object object)` Returns `true` iff that Object is is a `Comparator` whose ordering is known to be equivalent to mine.
    `int` | `hashCode()` Implement a hash code for this comparator that is consistent with `equals`.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INSTANCE

          public static final ComparableComparator INSTANCE

      The singleton instance.

  - ### Constructor Detail

    - #### ComparableComparator

          public ComparableComparator()

      Constructor whose use should be avoided.

      Please use the `comparableComparator()` method whenever possible.

  - ### Method Detail

    - #### comparableComparator

          public static <E extends Comparable<? super E>> ComparableComparator<E> comparableComparator()

      Gets the singleton instance of a ComparableComparator.

      Developers are encouraged to use the comparator returned from this method instead of constructing a new instance to reduce allocation and GC overhead when multiple comparable comparators may be used in the same VM.

      Type Parameters:
        `E` - the element type
      Returns:
        the singleton ComparableComparator
      Since:
        4.0

    - #### compare

          public int compare(E obj1,
                    E obj2)

      Compare the two `Comparable` arguments. This method is equivalent to:

          ((Comparable)obj1).compareTo(obj2)

      Specified by:
        `compare` in interface `Comparator<E extends Comparable<? super E>>`
      Parameters:
        `obj1` - the first object to compare
        `obj2` - the second object to compare
      Returns:
        negative if obj1 is less, positive if greater, zero if equal
      Throws:
        `NullPointerException` - if obj1 is `null`, or when `((Comparable)obj1).compareTo(obj2)` does
        `ClassCastException` - if obj1 is not a `Comparable`, or when `((Comparable)obj1).compareTo(obj2)` does

    - #### hashCode

          public int hashCode()

      Implement a hash code for this comparator that is consistent with `equals`.
      Overrides:
        `hashCode` in class `Object`
      Returns:
        a hash code for this comparator.
      Since:
        3.0

    - #### equals

          public boolean equals(Object object)

      Returns `true` iff that Object is is a `Comparator` whose ordering is known to be equivalent to mine.

      This implementation returns `true` iff `object.`getClass()`` equals `this.getClass()`. Subclasses may want to override this behavior to remain consistent with the `Comparator.equals(Object)` contract.

      Specified by:
        `equals` in interface `Comparator<E extends Comparable<? super E>>`
      Overrides:
        `equals` in class `Object`
      Parameters:
        `object` - the object to compare with
      Returns:
        `true` if equal
      Since:
        3.0

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.