Class ComparatorUtils


  • public class ComparatorUtils
    extends Object
    Provides convenient static utility methods for Comparator objects.

    Most of the functionality in this class can also be found in the comparators package. This class merely provides a convenient central place if you have use for more than one class in the comparators subpackage.

    Since:
    2.1
    • Method Detail

      • naturalComparator

        public static <E extends Comparable<? super E>> Comparator<E> naturalComparator()
        Gets a comparator that uses the natural order of the objects.
        Type Parameters:
        E - the object type to compare
        Returns:
        a comparator which uses natural order
      • chainedComparator

        public static <E> Comparator<E> chainedComparator​(Comparator<E>... comparators)
        Gets a comparator that compares using an array of Comparators, applied in sequence until one returns not equal or the array is exhausted.
        Type Parameters:
        E - the object type to compare
        Parameters:
        comparators - the comparators to use, not null or empty or containing nulls
        Returns:
        a ComparatorChain formed from the input comparators
        Throws:
        NullPointerException - if comparators array is null or contains a null
        See Also:
        ComparatorChain
      • chainedComparator

        public static <E> Comparator<E> chainedComparator​(Collection<Comparator<E>> comparators)
        Gets a comparator that compares using a collection of Comparators, applied in (default iterator) sequence until one returns not equal or the collection is exhausted.
        Type Parameters:
        E - the object type to compare
        Parameters:
        comparators - the comparators to use, not null or empty or containing nulls
        Returns:
        a ComparatorChain formed from the input comparators
        Throws:
        NullPointerException - if comparators collection is null or contains a null
        ClassCastException - if the comparators collection contains the wrong object type
        See Also:
        ComparatorChain
      • reversedComparator

        public static <E> Comparator<E> reversedComparator​(Comparator<E> comparator)
        Gets a comparator that reverses the order of the given comparator.
        Type Parameters:
        E - the object type to compare
        Parameters:
        comparator - the comparator to reverse
        Returns:
        a comparator that reverses the order of the input comparator
        See Also:
        ReverseComparator
      • booleanComparator

        public static Comparator<Boolean> booleanComparator​(boolean trueFirst)
        Gets a Comparator that can sort Boolean objects.

        The parameter specifies whether true or false is sorted first.

        The comparator throws NullPointerException if a null value is compared.

        Parameters:
        trueFirst - when true, sort true Booleans before false Booleans.
        Returns:
        a comparator that sorts booleans
      • nullLowComparator

        public static <E> Comparator<E> nullLowComparator​(Comparator<E> comparator)
        Gets a Comparator that controls the comparison of null values.

        The returned comparator will consider a null value to be less than any nonnull value, and equal to any other null value. Two nonnull values will be evaluated with the given comparator.

        Type Parameters:
        E - the object type to compare
        Parameters:
        comparator - the comparator that wants to allow nulls
        Returns:
        a version of that comparator that allows nulls
        See Also:
        NullComparator
      • nullHighComparator

        public static <E> Comparator<E> nullHighComparator​(Comparator<E> comparator)
        Gets a Comparator that controls the comparison of null values.

        The returned comparator will consider a null value to be greater than any nonnull value, and equal to any other null value. Two nonnull values will be evaluated with the given comparator.

        Type Parameters:
        E - the object type to compare
        Parameters:
        comparator - the comparator that wants to allow nulls
        Returns:
        a version of that comparator that allows nulls
        See Also:
        NullComparator
      • transformedComparator

        public static <I,​O> Comparator<I> transformedComparator​(Comparator<O> comparator,
                                                                      Transformer<? super I,​? extends O> transformer)
        Gets a Comparator that passes transformed objects to the given comparator.

        Objects passed to the returned comparator will first be transformed by the given transformer before they are compared by the given comparator.

        Type Parameters:
        I - the input object type of the transformed comparator
        O - the object type of the decorated comparator
        Parameters:
        comparator - the sort order to use
        transformer - the transformer to use
        Returns:
        a comparator that transforms its input objects before comparing them
        See Also:
        TransformingComparator
      • min

        public static <E> E min​(E o1,
                                E o2,
                                Comparator<E> comparator)
        Returns the smaller of the given objects according to the given comparator, returning the second object if the comparator returns equal.
        Type Parameters:
        E - the object type to compare
        Parameters:
        o1 - the first object to compare
        o2 - the second object to compare
        comparator - the sort order to use
        Returns:
        the smaller of the two objects
      • max

        public static <E> E max​(E o1,
                                E o2,
                                Comparator<E> comparator)
        Returns the larger of the given objects according to the given comparator, returning the second object if the comparator returns equal.
        Type Parameters:
        E - the object type to compare
        Parameters:
        o1 - the first object to compare
        o2 - the second object to compare
        comparator - the sort order to use
        Returns:
        the larger of the two objects