Package: groovy.util

## [Java] Class OrderBy<T>

- groovy.util.OrderBy

- All Implemented Interfaces and Traits:
    Comparator, Serializable

      public class OrderBy<T>
      extends Object
      implements Comparator, Serializable

  A helper class for sorting objects via a closure to return the field or operation on which to sort.

- - ### Constructor Summary

    Constructors
    Constructor and description
    `OrderBy()` Creates an ordering with no comparison closures.
    `OrderBy(boolean equalityCheck)` Creates an ordering with no comparison closures.
    `OrderBy(Closure closure)` Creates an ordering using a single comparison closure.
    `OrderBy(Closure closure, boolean equalityCheck)` Creates an ordering using a single comparison closure.
    `OrderBy(List<Closure> closures)` Creates an ordering using the supplied comparison closures.
    `OrderBy(List<Closure> closures, boolean equalityCheck)` Creates an ordering using the supplied comparison closures.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `add(Closure closure)` Adds a comparison closure evaluated after any existing closures.
    `` | `public int` | `compare(T object1, T object2)` Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. The implementor must ensure that signum`(compare(x, y)) == -signum(compare(y, x))` for all `x` and `y`. (This implies that `compare(x, y)` must throw an exception if and only if `compare(y, x)` throws an exception.) The implementor must also ensure that the relation is transitive: `((compare(x, y)>0) && (compare(y, z)>0))` implies `compare(x, z)>0`. Finally, the implementor must ensure that `compare(x, y)==0` implies that `signum(compare(x, z))==signum(compare(y, z))` for all `z`. throws: NullPointerException if an argument is null and this comparator does not permit null arguments throws: ClassCastException if the arguments' types prevent them from being compared by this comparator. API Note: It is generally the case, but not strictly required that `(compare(x, y)==0) == (x.equals(y))`. Generally speaking, any comparator that violates this condition should clearly indicate this fact. The recommended language is "Note: this comparator imposes orderings that are inconsistent with equals." Parameters: `o1` - the first object to be compared. `o2` - the second object to be compared. Returns: a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
    `` | `public boolean` | `isEqualityCheck()` Indicates whether equality-only comparison is enabled for non-comparable values.
    `` | `public void` | `setEqualityCheck(boolean equalityCheck)` Enables or disables equality-only comparison for non-comparable values.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### public OrderBy()

      Creates an ordering with no comparison closures.

    - #### public OrderBy(boolean equalityCheck)

      Creates an ordering with no comparison closures.

      Parameters:
        `equalityCheck` - whether equality-only comparison should be used for non-comparable values

    - #### public OrderBy(Closure closure)

      Creates an ordering using a single comparison closure.

      Parameters:
        `closure` - the comparison closure

    - #### public OrderBy(Closure closure, boolean equalityCheck)

      Creates an ordering using a single comparison closure.

      Parameters:
        `closure` - the comparison closure
        `equalityCheck` - whether equality-only comparison should be used for non-comparable values

    - #### public OrderBy(List<Closure> closures)

      Creates an ordering using the supplied comparison closures.

      Parameters:
        `closures` - the comparison closures

    - #### public OrderBy(List<Closure> closures, boolean equalityCheck)

      Creates an ordering using the supplied comparison closures.

      Parameters:
        `closures` - the comparison closures
        `equalityCheck` - whether equality-only comparison should be used for non-comparable values

  - ### Method Detail

    - #### public void add(Closure closure)

      Adds a comparison closure evaluated after any existing closures.

      Parameters:
        `closure` - the comparison closure to add

    - #### public int compare(T object1, T object2)

      Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

      The implementor must ensure that signum`(compare(x, y)) == -signum(compare(y, x))` for all `x` and `y`. (This implies that `compare(x, y)` must throw an exception if and only if `compare(y, x)` throws an exception.)

      The implementor must also ensure that the relation is transitive: `((compare(x, y)>0) && (compare(y, z)>0))` implies `compare(x, z)>0`.

      Finally, the implementor must ensure that `compare(x, y)==0` implies that `signum(compare(x, z))==signum(compare(y, z))` for all `z`.

      throws:
        NullPointerException if an argument is null and this comparator does not permit null arguments
      throws:
        ClassCastException if the arguments' types prevent them from being compared by this comparator.
      API Note:
        It is generally the case, but not strictly required that `(compare(x, y)==0) == (x.equals(y))`. Generally speaking, any comparator that violates this condition should clearly indicate this fact. The recommended language is "Note: this comparator imposes orderings that are inconsistent with equals."
      Parameters:
        `o1` - the first object to be compared.
        `o2` - the second object to be compared.
      Returns:
        a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

    - #### public boolean isEqualityCheck()

      Indicates whether equality-only comparison is enabled for non-comparable values.

      Returns:
        `true` if equality-only comparison is enabled

    - #### public void setEqualityCheck(boolean equalityCheck)

      Enables or disables equality-only comparison for non-comparable values.

      Parameters:
        `equalityCheck` - `true` to enable equality-only comparison