Top Description Fields Constructors Methods
org.springframework.util.comparator

public Class InstanceComparator<T>

extends Object
implements Comparator<T>
Class Inheritance
All Implemented Interfaces
java.util.Comparator
Type Parameters
<T>
the type of objects that may be compared by this comparator
Imports
java.util.Comparator, org.springframework.lang.Nullable, org.springframework.util.Assert

Compares objects based on an arbitrary class order. Allows objects to be sorted based on the types of class that they inherit — for example, this comparator can be used to sort a list of Numbers such that Longs occur before Integers.

Only the specified instanceOrder classes are considered during comparison. If two objects are both instances of the ordered type this comparator will return a value of 0. Consider combining with Comparator#thenComparing(Comparator) if additional sorting is required.

Author
Phillip Webb
Since
3.2
See Also
Comparator#thenComparing(Comparator)

Field Summary

Modifier and TypeField and Description
private final Class<?>[]

Constructor Summary

AccessConstructor and Description
public
InstanceComparator(Class<?>...
the ordered list of classes that should be used when comparing objects. Classes earlier in the list will be given a higher priority.
instanceOrder
)

Create a new InstanceComparator instance.

Method Summary

Modifier and TypeMethod and Description
public int
compare(T
the first object to be compared.
o1
,
T
the second object to be compared.
o2
)

Implements java.util.Comparator.compare.

Compares its two arguments for order.

private int
getOrder(T object)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

instanceOrderback to summary
private final Class<?>[] instanceOrder

Constructor Detail

InstanceComparatorback to summary
public InstanceComparator(Class<?>... instanceOrder)

Create a new InstanceComparator instance.

Parameters
instanceOrder:Class<?>[]

the ordered list of classes that should be used when comparing objects. Classes earlier in the list will be given a higher priority.

Method Detail

compareback to summary
public int compare(T o1, T o2)

Implements java.util.Comparator.compare.

Doc from java.util.Comparator.compare.

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.

Parameters
o1:T

the first object to be compared.

o2:T

the second object to be compared.

Returns:int

a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

Annotations
@Override
getOrderback to summary
private int getOrder(T object)