org.springframework.util.comparator

Class CompoundComparator<T>

  • All Implemented Interfaces:
    Serializable, Comparator<T>

    public class CompoundComparator<T>
    extends Object
    implements Comparator<T>, Serializable
    A comparator that chains a sequence of one or more more Comparators.

    A compound comparator calls each Comparator in sequence until a single Comparator returns a non-zero result, or the comparators are exhausted and zero is returned.

    This facilitates in-memory sorting similar to multi-column sorting in SQL. The order of any single Comparator in the list can also be reversed.

    Since:
    1.2.2
    Author:
    Keith Donald, Juergen Hoeller
    See Also:
    Serialized Form
    • Constructor Detail

      • CompoundComparator

        public CompoundComparator()
        Construct a CompoundComparator with initially no Comparators. Clients must add at least one Comparator before calling the compare method or an IllegalStateException is thrown.
      • CompoundComparator

        public CompoundComparator(Comparator... comparators)
        Construct a CompoundComparator from the Comparators in the provided array.

        All Comparators will default to ascending sort order, unless they are InvertibleComparators.

        Parameters:
        comparators - the comparators to build into a compound comparator
        See Also:
        InvertibleComparator
    • Method Detail

      • addComparator

        public void addComparator(Comparator<T> comparator)
        Add a Comparator to the end of the chain.

        The Comparator will default to ascending sort order, unless it is a InvertibleComparator.

        Parameters:
        comparator - the Comparator to add to the end of the chain
        See Also:
        InvertibleComparator
      • addComparator

        public void addComparator(Comparator<T> comparator,
                         boolean ascending)
        Add a Comparator to the end of the chain using the provided sort order.
        Parameters:
        comparator - the Comparator to add to the end of the chain
        ascending - the sort order: ascending (true) or descending (false)
      • setComparator

        public void setComparator(int index,
                         Comparator<T> comparator)
        Replace the Comparator at the given index.

        The Comparator will default to ascending sort order, unless it is a InvertibleComparator.

        Parameters:
        index - the index of the Comparator to replace
        comparator - the Comparator to place at the given index
        See Also:
        InvertibleComparator
      • setComparator

        public void setComparator(int index,
                         Comparator<T> comparator,
                         boolean ascending)
        Replace the Comparator at the given index using the given sort order.
        Parameters:
        index - the index of the Comparator to replace
        comparator - the Comparator to place at the given index
        ascending - the sort order: ascending (true) or descending (false)
      • invertOrder

        public void invertOrder()
        Invert the sort order of each sort definition contained by this compound comparator.
      • invertOrder

        public void invertOrder(int index)
        Invert the sort order of the sort definition at the specified index.
        Parameters:
        index - the index of the comparator to invert
      • setAscendingOrder

        public void setAscendingOrder(int index)
        Change the sort order at the given index to ascending.
        Parameters:
        index - the index of the comparator to change
      • setDescendingOrder

        public void setDescendingOrder(int index)
        Change the sort order at the given index to descending sort.
        Parameters:
        index - the index of the comparator to change
      • getComparatorCount

        public int getComparatorCount()
        Returns the number of aggregated comparators.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class  Object