Class OrderComparator
- All Implemented Interfaces:
Comparator<Object>
- Direct Known Subclasses:
AnnotationAwareOrderComparator
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.
- Since:
- 07.04.2003
- Author:
- Juergen Hoeller, Sam Brannen
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Strategy interface to provide an order source for a given object. -
Field Summary
Modifier and TypeFieldDescriptionstatic final OrderComparator
Shared default instance ofOrderComparator
. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
protected Integer
Find an order value indicated by the given object.protected int
Determine the order value for the given object.getPriority
(Object obj) Determine a priority value for the given object, if any.static void
Sort the given array with a default OrderComparator.static void
Sort the given List with a default OrderComparator.static void
sortIfNecessary
(Object value) Sort the given array or List with a default OrderComparator, if necessary.withSourceProvider
(OrderComparator.OrderSourceProvider sourceProvider) Build an adapted order comparator with the given source provider.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, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Field Details
-
INSTANCE
Shared default instance ofOrderComparator
.
-
-
Constructor Details
-
OrderComparator
public OrderComparator()
-
-
Method Details
-
withSourceProvider
Build an adapted order comparator with the given source provider.- Parameters:
sourceProvider
- the order source provider to use- Returns:
- the adapted comparator
- Since:
- 4.1
-
compare
- Specified by:
compare
in interfaceComparator<Object>
-
getOrder
Determine the order value for the given object.The default implementation checks against the
Ordered
interface through delegating tofindOrder(java.lang.Object)
. Can be overridden in subclasses.- Parameters:
obj
- the object to check- Returns:
- the order value, or
Ordered.LOWEST_PRECEDENCE
as fallback
-
findOrder
Find an order value indicated by 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
null
if none found
-
getPriority
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.- Parameters:
obj
- the object to check- Returns:
- the priority value, or
null
if none - Since:
- 4.1
-
sort
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:
-
sort
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:
-
sortIfNecessary
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.
- Parameters:
value
- the array or List to sort- See Also:
-