public class FixedOrderComparator<T>
extends java.lang.Object
implements java.util.Comparator<T>, java.io.Serializable
compare
yield that order.
For example:
String[] planets = {"Mercury", "Venus", "Earth", "Mars"}; FixedOrderComparator distanceFromSun = new FixedOrderComparator(planets); Arrays.sort(planets); // Sort to alphabetical order Arrays.sort(planets, distanceFromSun); // Back to original order
Once compare
has been called, the FixedOrderComparator is locked
and attempts to modify it yield an UnsupportedOperationException.
Instances of FixedOrderComparator 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.
This class is Serializable from Commons Collections 4.0.
Modifier and Type | Class and Description |
---|---|
static class |
FixedOrderComparator.UnknownObjectBehavior
Unknown object behavior enum.
|
Constructor and Description |
---|
FixedOrderComparator()
Constructs an empty FixedOrderComparator.
|
FixedOrderComparator(java.util.List<T> items)
Constructs a FixedOrderComparator which uses the order of the given list
to compare the objects.
|
FixedOrderComparator(T... items)
Constructs a FixedOrderComparator which uses the order of the given array
to compare the objects.
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(T obj)
Adds an item, which compares as after all items known to the Comparator.
|
boolean |
addAsEqual(T existingObj,
T newObj)
Adds a new item, which compares as equal to the given existing item.
|
int |
compare(T obj1,
T obj2)
Compares two objects according to the order of this Comparator.
|
boolean |
equals(java.lang.Object object)
Returns
true iff that Object is
is a Comparator whose ordering is known to be
equivalent to mine. |
FixedOrderComparator.UnknownObjectBehavior |
getUnknownObjectBehavior()
Gets the behavior for comparing unknown objects.
|
int |
hashCode()
Implement a hash code for this comparator that is consistent with
equals . |
boolean |
isLocked()
Returns true if modifications cannot be made to the FixedOrderComparator.
|
void |
setUnknownObjectBehavior(FixedOrderComparator.UnknownObjectBehavior unknownObjectBehavior)
Sets the behavior for comparing unknown objects.
|
public FixedOrderComparator()
public FixedOrderComparator(T... items)
The array is copied, so later changes will not affect the comparator.
items
- the items that the comparator can compare in orderjava.lang.NullPointerException
- if the array is nullpublic FixedOrderComparator(java.util.List<T> items)
The list is copied, so later changes will not affect the comparator.
items
- the items that the comparator can compare in orderjava.lang.NullPointerException
- if the list is nullpublic boolean isLocked()
public FixedOrderComparator.UnknownObjectBehavior getUnknownObjectBehavior()
public void setUnknownObjectBehavior(FixedOrderComparator.UnknownObjectBehavior unknownObjectBehavior)
unknownObjectBehavior
- the flag for unknown behaviour -
UNKNOWN_AFTER, UNKNOWN_BEFORE or UNKNOWN_THROW_EXCEPTIONjava.lang.UnsupportedOperationException
- if a comparison has been performedjava.lang.NullPointerException
- if unknownObjectBehavior is nullpublic boolean add(T obj)
obj
- the item to be added to the Comparator.java.lang.UnsupportedOperationException
- if a comparison has already been madepublic boolean addAsEqual(T existingObj, T newObj)
existingObj
- an item already in the Comparator's set of
known objectsnewObj
- an item to be added to the Comparator's set of
known objectsjava.lang.IllegalArgumentException
- if existingObject is not in the
Comparator's set of known objects.java.lang.UnsupportedOperationException
- if a comparison has already been madepublic int compare(T obj1, T obj2)
It is important to note that this class will throw an IllegalArgumentException in the case of an unrecognised object. This is not specified in the Comparator interface, but is the most appropriate exception.
compare
in interface java.util.Comparator<T>
obj1
- the first object to compareobj2
- the second object to comparejava.lang.IllegalArgumentException
- if obj1 or obj2 are not known
to this Comparator and an alternative behavior has not been set
via setUnknownObjectBehavior(UnknownObjectBehavior)
.public int hashCode()
equals
.hashCode
in class java.lang.Object
public boolean equals(java.lang.Object object)
true
iff that Object is
is a Comparator
whose ordering is known to be
equivalent to mine.
This implementation returns true
iff that
is a FixedOrderComparator
whose attributes are equal to mine.
equals
in interface java.util.Comparator<T>
equals
in class java.lang.Object
object
- the object to compare to"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"