org.apache.commons.collections.comparators
Class ComparatorChain
java.lang.Object
org.apache.commons.collections.comparators.ComparatorChain
- Comparator, Serializable
public class ComparatorChain
extends java.lang.Object
implements Comparator, Serializable
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.
$Revision: 1.18 $ $Date: 2004/05/16 11:48:49 $protected List | comparatorChain - The list of comparators in the chain.
|
protected boolean | isLocked - Whether the chain has been "locked".
|
protected BitSet | orderingBits - Order - false (clear) = ascend; true (set) = descend.
|
ComparatorChain() - Construct a ComparatorChain with no Comparators.
|
ComparatorChain(Comparator comparator) - Construct a ComparatorChain with a single Comparator,
sorting in the forward order
|
ComparatorChain(Comparator comparator, boolean reverse) - Construct a Comparator chain with a single Comparator,
sorting in the given order
|
ComparatorChain(List list) - Construct a ComparatorChain from the Comparators in the
List.
|
ComparatorChain(List list, BitSet bits) - Construct a ComparatorChain from the Comparators in the
given List.
|
void | addComparator(Comparator comparator) - Add a Comparator to the end of the chain using the
forward sort order
|
void | addComparator(Comparator comparator, boolean reverse) - Add a Comparator to the end of the chain using the
given sort order
|
int | compare(Object o1, Object o2) - Perform comparisons on the Objects as per
Comparator.compare(o1,o2).
|
boolean | equals(Object object) - Returns
true iff that Object is
is a Comparator whose ordering is known to be
equivalent to mine.
|
int | hashCode() - Implement a hash code for this comparator that is consistent with
equals .
|
boolean | isLocked() - Determine if modifications can still be made to the
ComparatorChain.
|
void | setComparator(int index, Comparator comparator) - Replace the Comparator at the given index, maintaining
the existing sort order.
|
void | setComparator(int index, 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.
|
comparatorChain
protected List comparatorChain
The list of comparators in the chain.
isLocked
protected boolean isLocked
Whether the chain has been "locked".
orderingBits
protected BitSet orderingBits
Order - false (clear) = ascend; true (set) = descend.
ComparatorChain
public ComparatorChain()
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
ComparatorChain
public ComparatorChain(Comparator comparator)
Construct a ComparatorChain with a single Comparator,
sorting in the forward order
comparator
- First comparator in the Comparator chain
ComparatorChain
public ComparatorChain(Comparator comparator,
boolean reverse)
Construct a Comparator chain with a single Comparator,
sorting in the given order
comparator
- First Comparator in the ComparatorChainreverse
- false = forward sort; true = reverse sort
ComparatorChain
public ComparatorChain(List list)
Construct a ComparatorChain from the Comparators in the
List. All Comparators will default to the forward
sort order.
list
- List of Comparators
ComparatorChain
public ComparatorChain(List list,
BitSet bits)
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 listbits
- Sort order for each Comparator. Extra bits are ignored,
unless extra Comparators are added by another method.
addComparator
public void addComparator(Comparator comparator)
Add a Comparator to the end of the chain using the
forward sort order
comparator
- Comparator with the forward sort order
addComparator
public void addComparator(Comparator comparator,
boolean reverse)
Add a Comparator to the end of the chain using the
given sort order
comparator
- Comparator to add to the end of the chainreverse
- false = forward sort order; true = reverse sort order
compare
public int compare(Object o1,
Object o2)
throws UnsupportedOperationException
Perform comparisons on the Objects as per
Comparator.compare(o1,o2).
o1
- the first object to compareo2
- the second object to compare
equals
public boolean equals(Object object)
Returns
true
iff
that Object is
is a
Comparator
whose ordering is known to be
equivalent to mine.
This implementation returns
true
iff
object.getClass()
equals
this.getClass()
, and the underlying
comparators and order bits are equal.
Subclasses may want to override this behavior to remain consistent
with the
Comparator.equals(Object)
contract.
object
- the object to compare with
hashCode
public int hashCode()
Implement a hash code for this comparator that is consistent with
equals
.
isLocked
public boolean isLocked()
Determine if modifications can still be made to the
ComparatorChain. ComparatorChains cannot be modified
once they have performed a comparison.
- true = ComparatorChain cannot be modified; false =
ComparatorChain can still be modified.
setComparator
public void setComparator(int index,
Comparator comparator)
throws IndexOutOfBoundsException
Replace the Comparator at the given index, maintaining
the existing sort order.
index
- index of the Comparator to replacecomparator
- Comparator to place at the given index
setComparator
public void setComparator(int index,
Comparator comparator,
boolean reverse)
Replace the Comparator at the given index in the
ComparatorChain, using the given sort order
index
- index of the Comparator to replacecomparator
- Comparator to setreverse
- false = forward sort order; true = reverse sort order
setForwardSort
public void setForwardSort(int index)
Change the sort order at the given index in the
ComparatorChain to a forward sort.
index
- Index of the ComparatorChain
setReverseSort
public void setReverseSort(int index)
Change the sort order at the given index in the
ComparatorChain to a reverse sort.
index
- Index of the ComparatorChain
size
public int size()
Number of Comparators in the current ComparatorChain.
Copyright © 2001-2006 Apache Software Foundation. All Rights Reserved.