Class CoordinateSequenceComparator

  • All Implemented Interfaces:
    java.util.Comparator

    public class CoordinateSequenceComparator
    extends java.lang.Object
    implements java.util.Comparator
    Compares two CoordinateSequences. For sequences of the same dimension, the ordering is lexicographic. Otherwise, lower dimensions are sorted before higher. The dimensions compared can be limited; if this is done ordinate dimensions above the limit will not be compared.

    If different behaviour is required for comparing size, dimension, or coordinate values, any or all methods can be overridden.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int dimensionLimit
      The number of dimensions to test
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static int compare​(double a, double b)
      Compare two doubles, allowing for NaN values.
      int compare​(java.lang.Object o1, java.lang.Object o2)
      Compares two CoordinateSequences for relative order.
      protected int compareCoordinate​(CoordinateSequence s1, CoordinateSequence s2, int i, int dimension)
      Compares the same coordinate of two CoordinateSequences along the given number of dimensions.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Comparator

        equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
    • Field Detail

      • dimensionLimit

        protected int dimensionLimit
        The number of dimensions to test
    • Constructor Detail

      • CoordinateSequenceComparator

        public CoordinateSequenceComparator()
        Creates a comparator which will test all dimensions.
      • CoordinateSequenceComparator

        public CoordinateSequenceComparator​(int dimensionLimit)
        Creates a comparator which will test only the specified number of dimensions.
        Parameters:
        dimensionLimit - the number of dimensions to test
    • Method Detail

      • compare

        public static int compare​(double a,
                                  double b)
        Compare two doubles, allowing for NaN values. NaN is treated as being less than any valid number.
        Parameters:
        a - a double
        b - a double
        Returns:
        -1, 0, or 1 depending on whether a is less than, equal to or greater than b
      • compare

        public int compare​(java.lang.Object o1,
                           java.lang.Object o2)
        Compares two CoordinateSequences for relative order.
        Specified by:
        compare in interface java.util.Comparator
        Parameters:
        o1 - a CoordinateSequence
        o2 - a CoordinateSequence
        Returns:
        -1, 0, or 1 depending on whether o1 is less than, equal to, or greater than o2
      • compareCoordinate

        protected int compareCoordinate​(CoordinateSequence s1,
                                        CoordinateSequence s2,
                                        int i,
                                        int dimension)
        Compares the same coordinate of two CoordinateSequences along the given number of dimensions.
        Parameters:
        s1 - a CoordinateSequence
        s2 - a CoordinateSequence
        i - the index of the coordinate to test
        dimension - the number of dimensions to test
        Returns:
        -1, 0, or 1 depending on whether s1[i] is less than, equal to, or greater than s2[i]