# Class ReverseComparator<E>

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

Type Parameters:
  `E` - the type of objects compared by this comparator

All Implemented Interfaces:
  `Serializable`, `Comparator<E>`

public class ReverseComparator<E> extends Object implements Comparator<E>, Serializable
Reverses the order of another comparator by reversing the arguments to its `compare` method.

Since:
  2.0
See Also:
  - `Collections.reverseOrder()`
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ReverseComparator()`
  Creates a comparator that compares objects based on the inverse of their natural ordering.
  `ReverseComparator(Comparator<? super E> comparator)`
  Creates a comparator that inverts the comparison of the given comparator.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `compare(E obj1, E obj2)`
  Compares two objects in reverse order.
  `boolean`
  `equals(Object object)`
  Returns `true` iff that Object 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`

  ### Methods inherited from interface java.util.Comparator

  `reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong`

- ## Constructor Details

  - ### ReverseComparator

    public ReverseComparator()
    Creates a comparator that compares objects based on the inverse of their natural ordering. Using this Constructor will create a ReverseComparator that is functionally identical to the Comparator returned by java.util.Collections.reverseOrder().
    See Also:
      - `Collections.reverseOrder()`

  - ### ReverseComparator

    public ReverseComparator(Comparator<? super E> comparator)
    Creates a comparator that inverts the comparison of the given comparator. If you pass in `null`, the ReverseComparator defaults to reversing the natural order, as per `Collections.reverseOrder()`.
    Parameters:
      `comparator` - Comparator to reverse

- ## Method Details

  - ### compare

    public int compare(E obj1, E obj2)
    Compares two objects in reverse order.
    Specified by:
      `compare` in interface `Comparator<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

  - ### equals

    public boolean equals(Object object)
    Returns `true` iff that Object is a `Comparator` whose ordering is known to be equivalent to mine.

    This implementation returns `true` iff `<em>object</em>.{@link Object#getClass() getClass()}` equals `this.getClass()`, and the underlying comparators are equal. Subclasses may want to override this behavior to remain consistent with the `equals` contract.

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

  - ### hashCode

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