Package org.springframework.util.comparator

# Class InstanceComparator<T>

java.lang.Object
org.springframework.util.comparator.InstanceComparator<T>

Type Parameters:
  `T` - the type of objects that may be compared by this comparator

All Implemented Interfaces:
  `Comparator<T>`

public class InstanceComparator<T> extends Object implements Comparator<T>
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 `Number`s such that `Long`s occur before `Integer`s.

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.

Since:
  3.2
Author:
  Phillip Webb
See Also:
  - `Comparator.thenComparing(Comparator)`

## Constructor Summary

Constructors
Constructor
Description
`InstanceComparator(Class<?>... instanceOrder)`
Create a new `InstanceComparator` instance.

## Method Summary

Modifier and Type
Method
Description
`int`
`compare(T o1, T o2)`

### 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`

## Constructor Details

### InstanceComparator

public InstanceComparator(Class<?>... instanceOrder)
Create a new `InstanceComparator` instance.

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

## Method Details

### compare

public int compare(T o1, T o2)

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