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.
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
comparatorChain | The list of comparators in the chain. | ||||||||||
isLocked | Whether the chain has been "locked". | ||||||||||
orderingBits | Order - false (clear) = ascend; true (set) = descend. |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Construct a ComparatorChain with no Comparators.
| |||||||||||
Construct a ComparatorChain with a single Comparator,
sorting in the forward order
| |||||||||||
Construct a Comparator chain with a single Comparator,
sorting in the given order
| |||||||||||
Construct a ComparatorChain from the Comparators in the
List.
| |||||||||||
Construct a ComparatorChain from the Comparators in the
given List.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Add a Comparator to the end of the chain using the
forward sort order
| |||||||||||
Add a Comparator to the end of the chain using the
given sort order
| |||||||||||
Perform comparisons on the Objects as per
Comparator.compare(o1,o2).
| |||||||||||
Returns
true iff that Object is
is a Comparator whose ordering is known to be
equivalent to mine. | |||||||||||
Implement a hash code for this comparator that is consistent with
equals . | |||||||||||
Determine if modifications can still be made to the
ComparatorChain.
| |||||||||||
Replace the Comparator at the given index in the
ComparatorChain, using the given sort order
| |||||||||||
Replace the Comparator at the given index, maintaining
the existing sort order.
| |||||||||||
Change the sort order at the given index in the
ComparatorChain to a forward sort.
| |||||||||||
Change the sort order at the given index in the
ComparatorChain to a reverse sort.
| |||||||||||
Number of Comparators in the current ComparatorChain.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
java.util.Comparator
|
Whether the chain has been "locked".
Construct a ComparatorChain with no Comparators. You must add at least one Comparator before calling the compare(Object,Object) method, or an UnsupportedOperationException is thrown
Construct a ComparatorChain with a single Comparator, sorting in the forward order
comparator | First comparator in the Comparator chain |
---|
Construct a Comparator chain with a single Comparator, sorting in the given order
comparator | First Comparator in the ComparatorChain |
---|---|
reverse | false = forward sort; true = reverse sort |
Construct a ComparatorChain from the Comparators in the List. All Comparators will default to the forward sort order.
list | List of Comparators |
---|
Construct a ComparatorChain from the Comparators in the given List. The sort order of each column will be drawn from the given BitSet. When determining the sort order for Comparator at index i in the List, the ComparatorChain will call BitSet.get(i). If that method returns false, the forward sort order is used; a return value of true indicates reverse sort order.
list | List of Comparators. NOTE: This constructor does not perform a defensive copy of the list |
---|---|
bits | Sort order for each Comparator. Extra bits are ignored, unless extra Comparators are added by another method. |
Add a Comparator to the end of the chain using the forward sort order
comparator | Comparator with the forward sort order |
---|
Add a Comparator to the end of the chain using the given sort order
comparator | Comparator to add to the end of the chain |
---|---|
reverse | false = forward sort order; true = reverse sort order |
Perform comparisons on the Objects as per Comparator.compare(o1,o2).
o1 | the first object to compare |
---|---|
o2 | the second object to compare |
UnsupportedOperationException | if the ComparatorChain does not contain at least one Comparator |
---|
Returns true
iff that Object is
is a Comparator
whose ordering is known to be
equivalent to mine.
This implementation returns true
iff object.
equals getClass()
this.getClass()
, and the underlying
comparators and order bits are equal.
Subclasses may want to override this behavior to remain consistent
with the equals(Object)
contract.
object | the object to compare with |
---|
Implement a hash code for this comparator that is consistent with
equals
.
Determine if modifications can still be made to the ComparatorChain. ComparatorChains cannot be modified once they have performed a comparison.
Replace the Comparator at the given index in the ComparatorChain, using the given sort order
index | index of the Comparator to replace |
---|---|
comparator | Comparator to set |
reverse | false = forward sort order; true = reverse sort order |
Replace the Comparator at the given index, maintaining the existing sort order.
index | index of the Comparator to replace |
---|---|
comparator | Comparator to place at the given index |
IndexOutOfBoundsException | if index < 0 or index >= size() |
---|
Change the sort order at the given index in the ComparatorChain to a forward sort.
index | Index of the ComparatorChain |
---|
Change the sort order at the given index in the ComparatorChain to a reverse sort.
index | Index of the ComparatorChain |
---|
Number of Comparators in the current ComparatorChain.