Package com.tangosol.util.comparator
Class ChainedComparator<T>
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.comparator.ChainedComparator<T>
-
- All Implemented Interfaces:
ExternalizableLite
,PortableObject
,EntryAwareComparator<T>
,QueryMapComparator<T>
,Serializable
,Comparator<T>
public class ChainedComparator<T> extends Base implements Comparator<T>, QueryMapComparator<T>, EntryAwareComparator<T>, Serializable, ExternalizableLite, PortableObject
Composite comparator implementation based on a collection of comparators. The comparators in the array assumed to be sorted according to their priorities; only in a case when the n-th comparator cannot determine the order of the passed objects:aComparator[n].compare(o1, o2) == 0
the (n+1)-th comparator will be applied to calculate the value.- Author:
- gg 2002.11.14
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected Comparator<T>[]
m_aComparator
The Comparator array.
-
Constructor Summary
Constructors Constructor Description ChainedComparator()
Default constructor (for ExternalizableLite and PortableObject).ChainedComparator(Comparator<T>... aComparator)
Construct a ChainedComparator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compare(T o1, T o2)
Compares its two arguments for order.int
compareEntries(QueryMap.Entry<?,T> entry1, QueryMap.Entry<?,T> entry2)
Compare two entries based on the rules specified byComparator
.boolean
equals(Object o)
Determine if two ChainedComparator objects are equal.Comparator<T>[]
getComparators()
Obtain the underlying Comparator array.int
hashCode()
Return the hash code for this comparator.boolean
isKeyComparator()
Specifies whether this comparator expects to compare keys or values.void
readExternal(PofReader in)
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
readExternal(DataInput in)
Restore the contents of this object by loading the object's state from the passed DataInput object.String
toString()
Return a human-readable description for this ChainedComparator.void
writeExternal(PofWriter out)
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.void
writeExternal(DataOutput out)
Save the contents of this object by storing the object's state into the passed DataOutput object.-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
-
-
-
Field Detail
-
m_aComparator
protected Comparator<T>[] m_aComparator
The Comparator array.
-
-
Constructor Detail
-
ChainedComparator
public ChainedComparator()
Default constructor (for ExternalizableLite and PortableObject).
-
ChainedComparator
@SafeVarargs public ChainedComparator(Comparator<T>... aComparator)
Construct a ChainedComparator.- Parameters:
aComparator
- the comparator array
-
-
Method Detail
-
compare
public int compare(T o1, T o2)
Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.- Specified by:
compare
in interfaceComparator<T>
- Parameters:
o1
- the first object to be comparedo2
- the second object to be compared- Returns:
- a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second
- Throws:
ClassCastException
- if the arguments' types prevent them from being compared by this Comparator.
-
compareEntries
public int compareEntries(QueryMap.Entry<?,T> entry1, QueryMap.Entry<?,T> entry2)
Compare two entries based on the rules specified byComparator
.This implementation simply passes on this invocation to the wrapped Comparator objects if they too implement this interface, or invokes their default compare method passing the values extracted from the passed entries.
- Specified by:
compareEntries
in interfaceQueryMapComparator<T>
- Parameters:
entry1
- the first entry to compare values from; read-onlyentry2
- the second entry to compare values from; read-only- Returns:
- a negative integer, zero, or a positive integer as the first entry denotes a value that is is less than, equal to, or greater than the value denoted by the second entry
-
isKeyComparator
public boolean isKeyComparator()
Specifies whether this comparator expects to compare keys or values.- Specified by:
isKeyComparator
in interfaceEntryAwareComparator<T>
- Returns:
- true iff all the underlying comparators implement the EntryAwareComparator interface and all isKeyComparator() calls return true
-
toString
public String toString()
Return a human-readable description for this ChainedComparator.
-
equals
public boolean equals(Object o)
Determine if two ChainedComparator objects are equal.- Specified by:
equals
in interfaceComparator<T>
- Overrides:
equals
in classObject
- Parameters:
o
- the other comparator- Returns:
- true if the passed object is equal to this ChainedComparator
-
hashCode
public int hashCode()
Return the hash code for this comparator.
-
getComparators
public Comparator<T>[] getComparators()
Obtain the underlying Comparator array.- Returns:
- the Comparator array
-
readExternal
public void readExternal(DataInput in) throws IOException
Restore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternal
in interfaceExternalizableLite
- Parameters:
in
- the DataInput stream to read data from in order to restore the state of this object- Throws:
IOException
- if an I/O exception occursNotActiveException
- if the object is not in its initial state, and therefore cannot be deserialized into
-
writeExternal
public void writeExternal(DataOutput out) throws IOException
Save the contents of this object by storing the object's state into the passed DataOutput object.- Specified by:
writeExternal
in interfaceExternalizableLite
- Parameters:
out
- the DataOutput stream to write the state of this object to- Throws:
IOException
- if an I/O exception occurs
-
readExternal
public void readExternal(PofReader in) throws IOException
Restore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
readExternal
in interfacePortableObject
- Parameters:
in
- the PofReader from which to read the object's state- Throws:
IOException
- if an I/O error occurs
-
writeExternal
public void writeExternal(PofWriter out) throws IOException
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.- Specified by:
writeExternal
in interfacePortableObject
- Parameters:
out
- the PofWriter to which to write the object's state- Throws:
IOException
- if an I/O error occurs
-
-