Class CoordinateSequenceComparator

  • All Implemented Interfaces:
    Comparator

    public class CoordinateSequenceComparator
    extends Object
    implements 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 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
      • 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]