org.springframework.util.comparator
Class CompoundComparator<T>
- java.lang.Object
-
- org.springframework.util.comparator.CompoundComparator<T>
-
- All Implemented Interfaces:
- Serializable, Comparator<T>
public class CompoundComparator<T> extends Object implements Comparator<T>, Serializable
A comparator that chains a sequence of one or more more Comparators.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.
- Since:
- 1.2.2
- Author:
- Keith Donald, Juergen Hoeller
- See Also:
- Serialized Form
-
Constructor Summary
Constructors Constructor and Description CompoundComparator()
Construct a CompoundComparator with initially no Comparators.CompoundComparator(Comparator... comparators)
Construct a CompoundComparator from the Comparators in the provided array.
Method Summary
Methods 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()
-
Constructor Detail
CompoundComparator
public CompoundComparator()
Construct a CompoundComparator with initially no Comparators. Clients must add at least one Comparator before calling the compare method or an IllegalStateException is thrown.
CompoundComparator
public CompoundComparator(Comparator... comparators)
Construct a CompoundComparator from the Comparators in the provided array.All Comparators will default to ascending sort order, unless they are InvertibleComparators.
- Parameters:
-
comparators
- the comparators to build into a compound comparator - See Also:
-
InvertibleComparator
Method Detail
addComparator
public void addComparator(Comparator<T> comparator)
Add a Comparator to the end of the chain.The Comparator will default to ascending sort order, unless it is a InvertibleComparator.
- Parameters:
-
comparator
- the Comparator to add to the end of the chain - See Also:
-
InvertibleComparator
addComparator
public void addComparator(Comparator<T> comparator, boolean ascending)
Add a Comparator to the end of the chain using the provided sort order.- Parameters:
-
comparator
- the Comparator to add to the end of the chain -
ascending
- the sort order: ascending (true) or descending (false)
setComparator
public void setComparator(int index, Comparator<T> comparator)
Replace the Comparator at the given index.The Comparator will default to ascending sort order, unless it is a InvertibleComparator.
- Parameters:
-
index
- the index of the Comparator to replace -
comparator
- the Comparator to place at the given index - See Also:
-
InvertibleComparator
setComparator
public void setComparator(int index, Comparator<T> comparator, boolean ascending)
Replace the Comparator at the given index using the given sort order.- Parameters:
-
index
- the index of the Comparator to replace -
comparator
- the Comparator to place at the given index -
ascending
- the sort order: ascending (true) or descending (false)
invertOrder
public void invertOrder()
Invert the sort order of each sort definition contained by this compound comparator.
invertOrder
public void invertOrder(int index)
Invert the sort order of the sort definition at the specified index.- Parameters:
-
index
- the index of the comparator to invert
setAscendingOrder
public void setAscendingOrder(int index)
Change the sort order at the given index to ascending.- Parameters:
-
index
- the index of the comparator to change
setDescendingOrder
public void setDescendingOrder(int index)
Change the sort order at the given index to descending sort.- Parameters:
-
index
- the index of the comparator to change
getComparatorCount
public int getComparatorCount()
Returns the number of aggregated comparators.
compare
public int compare(T o1, T o2)
- Specified by:
-
compare
in interfaceComparator<T>
equals
public boolean equals(Object obj)
- Specified by:
-
equals
in interfaceComparator<T>
- Overrides:
-
equals
in classObject