|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.commons.collections.comparators.ComparatorChain
A ComparatorChain is a Comparator that wraps one or more Comparators in sequence. The ComparatorChain calls each Comparator in sequence until either 1) any single Comparator returns a non-zero result (and that result is then returned), or 2) the ComparatorChain is exhausted (and zero is returned). This type of sorting is very similar to multi-column sorting in SQL, and this class allows Java classes to emulate that kind of behaviour when sorting a List.
To further facilitate SQL-like sorting, the order of any single Comparator in the list can be reversed.
Calling a method that adds new Comparators or changes the ascend/descend sort after compare(Object, Object) has been called will result in an UnsupportedOperationException. However, take care to not alter the underlying List of Comparators or the BitSet that defines the sort order.
Instances of ComparatorChain are not synchronized. The class is not thread-safe at construction time, but it is thread-safe to perform multiple comparisons after all the setup operations are complete.
Constructor Summary | |
ComparatorChain()
Construct a ComparatorChain with no Comparators. |
|
ComparatorChain(java.util.Comparator comparator)
Construct a ComparatorChain with a single Comparator, sorting in the forward order |
|
ComparatorChain(java.util.Comparator comparator,
boolean reverse)
Construct a Comparator chain with a single Comparator, sorting in the given order |
|
ComparatorChain(java.util.List list)
Construct a ComparatorChain from the Comparators in the List. |
|
ComparatorChain(java.util.List list,
java.util.BitSet bits)
Construct a ComparatorChain from the Comparators in the given List. |
Method Summary | |
void |
addComparator(java.util.Comparator comparator)
Add a Comparator to the end of the chain using the forward sort order |
void |
addComparator(java.util.Comparator comparator,
boolean reverse)
Add a Comparator to the end of the chain using the given sort order |
int |
compare(java.lang.Object o1,
java.lang.Object o2)
Perform comaparisons on the Objects as per Comparator.compare(o1,o2). |
boolean |
isLocked()
Determine if modifications can still be made to the ComparatorChain. |
void |
setComparator(int index,
java.util.Comparator comparator)
Replace the Comparator at the given index, maintaining the existing sort order. |
void |
setComparator(int index,
java.util.Comparator comparator,
boolean reverse)
Replace the Comparator at the given index in the ComparatorChain, using the given sort order |
void |
setForwardSort(int index)
Change the sort order at the given index in the ComparatorChain to a forward sort. |
void |
setReverseSort(int index)
Change the sort order at the given index in the ComparatorChain to a reverse sort. |
int |
size()
Number of Comparators in the current ComparatorChain. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface java.util.Comparator |
equals |
Constructor Detail |
public ComparatorChain()
public ComparatorChain(java.util.Comparator comparator)
comparator
- First comparator in the Comparator chainpublic ComparatorChain(java.util.Comparator comparator, boolean reverse)
comparator
- First Comparator in the ComparatorChainreverse
- false = forward sort; true = reverse sortpublic ComparatorChain(java.util.List list)
list
- List of ComparatorsComparatorChain(List,BitSet)
public ComparatorChain(java.util.List list, java.util.BitSet bits)
list
- List of Comparators. NOTE: This constructor does not perform a
defensive copy of the listbits
- Sort order for each Comparator. Extra bits are ignored,
unless extra Comparators are added by another method.Method Detail |
public void addComparator(java.util.Comparator comparator)
comparator
- Comparator with the forward sort orderpublic void addComparator(java.util.Comparator comparator, boolean reverse)
comparator
- Comparator to add to the end of the chainreverse
- false = forward sort order; true = reverse sort orderpublic void setComparator(int index, java.util.Comparator comparator) throws java.lang.IndexOutOfBoundsException
index
- index of the Comparator to replacecomparator
- Comparator to place at the given index
java.lang.IndexOutOfBoundsException
- if index < 0 or index > size()public void setComparator(int index, java.util.Comparator comparator, boolean reverse)
index
- index of the Comparator to replacecomparator
- Comparator to setreverse
- false = forward sort order; true = reverse sort orderpublic void setForwardSort(int index)
index
- Index of the ComparatorChainpublic void setReverseSort(int index)
index
- Index of the ComparatorChainpublic int size()
public boolean isLocked()
public int compare(java.lang.Object o1, java.lang.Object o2) throws java.lang.UnsupportedOperationException
compare
in interface java.util.Comparator
o1
- object 1o2
- object 2
java.lang.UnsupportedOperationException
- if the ComparatorChain does not contain at least one
Comparator
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |