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:
  • Field Details

    • m_aComparator

      protected Comparator<T>[] m_aComparator
      The Comparator array.
  • Constructor Details

    • 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 Details

    • 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 interface Comparator<T>
      Parameters:
      o1 - the first object to be compared
      o2 - 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 by Comparator.

      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 interface QueryMapComparator<T>
      Parameters:
      entry1 - the first entry to compare values from; read-only
      entry2 - 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 interface EntryAwareComparator<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.
      Overrides:
      toString in class Object
      Returns:
      a String description of the ChainedComparator
    • equals

      public boolean equals(Object o)
      Determine if two ChainedComparator objects are equal.
      Specified by:
      equals in interface Comparator<T>
      Overrides:
      equals in class Object
      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.
      Overrides:
      hashCode in class Object
      Returns:
      the hash code value 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 interface ExternalizableLite
      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 occurs
    • 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 interface ExternalizableLite
      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 interface PortableObject
      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 interface PortableObject
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs