![JAR search and dependency download from the Maven repository](/logo.png)
org.jaitools.numeric.RangeComparator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt-all Show documentation
Show all versions of jt-all Show documentation
Provides a single jar containing all JAITools modules which you can
use instead of including individual modules in your project. Note:
It does not include the Jiffle scripting language or Jiffle image
operator.
/*
* Copyright (c) 2010-2013, Michael Bedward. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.jaitools.numeric;
import java.util.Comparator;
/**
* Compares ranges by min end-point, then max end-point. This reduces the
* detailed comparison available from {@linkplain RangeExtendedComparator} to
* an integer result that is compatible with generic sorting methods such
* as
* {@link java.util.Collections#sort(java.util.List, Comparator)}.
*
*
*
* Result Meaning
*
*
* negative
* either r1 min is less than r2 min or r1 max is less than r2 max
*
*
* zero
* r1 and r2 are equal
*
*
* positive
* either r1 min is greater than r2 min or r1 max is greater than r2 max
*
*
*
* @param range value type
*
* @author michael
*/
public class RangeComparator implements Comparator> {
private RangeExtendedComparator delegate;
/**
* Creates a new comparator.
*/
public RangeComparator() {
this(null);
}
/**
* Creates a new comparator that will use the supplied extended comparator.
*
* @param ec extended comparator (may be null)
*/
public RangeComparator(RangeExtendedComparator ec) {
this.delegate = ec == null ? new RangeExtendedComparator() : ec;
}
/**
* Compares two ranges.
* Returns a negative value if r1 min is less than r2 min OR r1 max is less
* than r2 max; a positive value if r1 min is greater than r2 min OR r2
* max is greater than r2 max; or zero if the ranges are identical.
*
* @param r1 first range
* @param r2 second range
*
* @returns an integer value indicating r1 compared to r2
*/
public int compare(Range r1, Range r2) {
RangeExtendedComparator.Result result = delegate.compare(r1, r2);
switch (result.getAt(RangeExtendedComparator.MIN_MIN)) {
case RangeExtendedComparator.LT:
return -1;
case RangeExtendedComparator.GT:
return 1;
default:
switch (result.getAt(RangeExtendedComparator.MAX_MAX)) {
case RangeExtendedComparator.LT:
return -1;
case RangeExtendedComparator.GT:
return 1;
default:
return 0;
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy