org.springframework.core

## Class OrderComparator

- java.lang.Object
- - org.springframework.core.OrderComparator

- All Implemented Interfaces:
    Comparator<Object>
  Direct Known Subclasses:
    AnnotationAwareOrderComparator

      public class OrderComparator
      extends Object
      implements Comparator<Object>

  `Comparator` implementation for `Ordered` objects, sorting by order value ascending (resp. by priority descending).

  Non-`Ordered` objects are treated as greatest order values, thus ending up at the end of the list, in arbitrary order (just like same order values of `Ordered` objects).

  Since:
    07.04.2003
  Author:
    Juergen Hoeller
  See Also:
    `Ordered`, `Collections.sort(java.util.List, java.util.Comparator)`, `Arrays.sort(Object[], java.util.Comparator)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static OrderComparator` | `INSTANCE` Shared default instance of OrderComparator.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OrderComparator()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compare(Object o1, Object o2)`
    `protected int` | `getOrder(Object obj)` Determine the order value for the given object.
    `static void` | `sort(List<?> list)` Sort the given List with a default OrderComparator.
    `static void` | `sort(Object[] array)` Sort the given array with a default OrderComparator.

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

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

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

      `equals`

- - ### Field Detail

    - #### INSTANCE

          public static final OrderComparator INSTANCE

      Shared default instance of OrderComparator.

  - ### Constructor Detail

    - #### OrderComparator

          public OrderComparator()

  - ### Method Detail

    - #### compare

          public int compare(Object o1,
                    Object o2)

      Specified by:
        `compare` in interface `Comparator<Object>`

    - #### getOrder

          protected int getOrder(Object obj)

      Determine the order value for the given object.

      The default implementation checks against the `Ordered` interface. Can be overridden in subclasses.

      Parameters:
        `obj` - the object to check
      Returns:
        the order value, or `Ordered.LOWEST_PRECEDENCE` as fallback

    - #### sort

          public static void sort(List<?> list)

      Sort the given List with a default OrderComparator.

      Optimized to skip sorting for lists with size 0 or 1, in order to avoid unnecessary array extraction.

      Parameters:
        `list` - the List to sort
      See Also:
        `Collections.sort(java.util.List, java.util.Comparator)`

    - #### sort

          public static void sort(Object[] array)

      Sort the given array with a default OrderComparator.

      Optimized to skip sorting for lists with size 0 or 1, in order to avoid unnecessary array extraction.

      Parameters:
        `array` - the array to sort
      See Also:
        `Arrays.sort(Object[], java.util.Comparator)`