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_aComparatorThe 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 intcompare(T o1, T o2)Compares its two arguments for order.intcompareEntries(QueryMap.Entry<?,T> entry1, QueryMap.Entry<?,T> entry2)Compare two entries based on the rules specified byComparator.booleanequals(Object o)Determine if two ChainedComparator objects are equal.Comparator<T>[]getComparators()Obtain the underlying Comparator array.inthashCode()Return the hash code for this comparator.booleanisKeyComparator()Specifies whether this comparator expects to compare keys or values.voidreadExternal(PofReader in)Restore the contents of a user type instance by reading its state using the specified PofReader object.voidreadExternal(DataInput in)Restore the contents of this object by loading the object's state from the passed DataInput object.StringtoString()Return a human-readable description for this ChainedComparator.voidwriteExternal(PofWriter out)Save the contents of a POF user type instance by writing its state using the specified PofWriter object.voidwriteExternal(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, newHashMap, newHashMap, newHashSet, newHashSet, 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:
comparein 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:
compareEntriesin 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:
isKeyComparatorin 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:
equalsin interfaceComparator<T>- Overrides:
equalsin 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:
readExternalin 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:
writeExternalin 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:
readExternalin 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:
writeExternalin interfacePortableObject- Parameters:
out- the PofWriter to which to write the object's state- Throws:
IOException- if an I/O error occurs
-
-