类 OrderComparator

java.lang.Object
cn.taketoday.core.OrderComparator
所有已实现的接口:
Comparator<Object>
直接已知子类:
AnnotationAwareOrderComparator

public class OrderComparator extends Object implements Comparator<Object>
Comparator implementation for Ordered objects, sorting by order value ascending, respectively by priority descending.

PriorityOrdered Objects

PriorityOrdered objects will be sorted with higher priority than plain Ordered objects.

Same Order Objects

Objects that have the same order value will be sorted with arbitrary ordering with respect to other objects with the same order value.

Non-ordered Objects

Any object that does not provide its own order value is implicitly assigned a value of Ordered.LOWEST_PRECEDENCE, thus ending up at the end of a sorted collection in arbitrary order with respect to other objects with the same order value.

从以下版本开始:
4.0
作者:
Juergen Hoeller, Sam Brannen, TODAY 2021/9/12 11:32
另请参阅:
  • 字段详细资料

    • INSTANCE

      public static final OrderComparator INSTANCE
      Shared default instance of OrderComparator.
  • 构造器详细资料

    • OrderComparator

      public OrderComparator()
  • 方法详细资料

    • withSourceProvider

      public <T> Comparator<T> withSourceProvider(OrderSourceProvider sourceProvider)
      Build an adapted order comparator with the given source provider.
      参数:
      sourceProvider - the order source provider to use
      返回:
      the adapted comparator
    • compare

      public int compare(@Nullable Object o1, @Nullable Object o2)
      指定者:
      compare 在接口中 Comparator<Object>
    • getOrder

      public int getOrder(@Nullable Object obj)
      Determine the order value for the given object.

      The default implementation checks against the Ordered interface through delegating to findOrder(java.lang.Object). Can be overridden in subclasses.

      参数:
      obj - the object to check
      返回:
      the order value, or Ordered.LOWEST_PRECEDENCE as fallback
    • findOrder

      @Nullable protected Integer findOrder(Object obj)
      Find an order value indicated by the given object.

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

      参数:
      obj - the object to check
      返回:
      the order value, or null if none found
    • getPriority

      @Nullable public Integer getPriority(Object obj)
      Determine a priority value for the given object, if any.

      The default implementation always returns null. Subclasses may override this to give specific kinds of values a 'priority' characteristic, in addition to their 'order' semantics. A priority indicates that it may be used for selecting one object over another, in addition to serving for ordering purposes in a list/array.

      参数:
      obj - the object to check
      返回:
      the priority value, or null if none
    • 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.

      参数:
      list - the List to sort
      另请参阅:
    • 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.

      参数:
      array - the array to sort
      另请参阅:
    • sortIfNecessary

      public static void sortIfNecessary(Object value)
      Sort the given array or List with a default OrderComparator, if necessary. Simply skips sorting when given any other value.

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

      参数:
      value - the array or List to sort
      另请参阅: