public class CompoundComparator<T> extends Object implements Comparator<T>, Serializable
A compound comparator calls each Comparator in sequence until a single Comparator returns a non-zero result, or the comparators are exhausted and zero is returned.
This facilitates in-memory sorting similar to multi-column sorting in SQL. The order of any single Comparator in the list can also be reversed.
Constructor and Description |
---|
CompoundComparator()
Construct a CompoundComparator with initially no Comparators.
|
CompoundComparator(Comparator... comparators)
Construct a CompoundComparator from the Comparators in the provided array.
|
Modifier and Type | Method and Description |
---|---|
void |
addComparator(Comparator<T> comparator)
Add a Comparator to the end of the chain.
|
void |
addComparator(Comparator<T> comparator,
boolean ascending)
Add a Comparator to the end of the chain using the provided sort order.
|
int |
compare(T o1,
T o2) |
boolean |
equals(Object obj) |
int |
getComparatorCount()
Returns the number of aggregated comparators.
|
int |
hashCode() |
void |
invertOrder()
Invert the sort order of each sort definition contained by this compound
comparator.
|
void |
invertOrder(int index)
Invert the sort order of the sort definition at the specified index.
|
void |
setAscendingOrder(int index)
Change the sort order at the given index to ascending.
|
void |
setComparator(int index,
Comparator<T> comparator)
Replace the Comparator at the given index.
|
void |
setComparator(int index,
Comparator<T> comparator,
boolean ascending)
Replace the Comparator at the given index using the given sort order.
|
void |
setDescendingOrder(int index)
Change the sort order at the given index to descending sort.
|
String |
toString() |
public CompoundComparator()
public CompoundComparator(Comparator... comparators)
All Comparators will default to ascending sort order, unless they are InvertibleComparators.
comparators
- the comparators to build into a compound comparatorInvertibleComparator
public void addComparator(Comparator<T> comparator)
The Comparator will default to ascending sort order, unless it is a InvertibleComparator.
comparator
- the Comparator to add to the end of the chainInvertibleComparator
public void addComparator(Comparator<T> comparator, boolean ascending)
comparator
- the Comparator to add to the end of the chainascending
- the sort order: ascending (true) or descending (false)public void setComparator(int index, Comparator<T> comparator)
The Comparator will default to ascending sort order, unless it is a InvertibleComparator.
index
- the index of the Comparator to replacecomparator
- the Comparator to place at the given indexInvertibleComparator
public void setComparator(int index, Comparator<T> comparator, boolean ascending)
index
- the index of the Comparator to replacecomparator
- the Comparator to place at the given indexascending
- the sort order: ascending (true) or descending (false)public void invertOrder()
public void invertOrder(int index)
index
- the index of the comparator to invertpublic void setAscendingOrder(int index)
index
- the index of the comparator to changepublic void setDescendingOrder(int index)
index
- the index of the comparator to changepublic int getComparatorCount()
public int compare(T o1, T o2)
compare
in interface Comparator<T>
public boolean equals(Object obj)
equals
in interface Comparator<T>
equals
in class Object