/** * Creates a new comparator that will use the supplied extended comparator. * * @param ec extended comparator (may be null) */ public RangeComparator(RangeExtendedComparator<T> ec) { this.delegate = ec == null ? new RangeExtendedComparator<T>() : ec; }
/** * Sorts a list of ranges into ascending order of min value, then max value. * * @param <T> the value type * @param ranges the ranges to sort */ public static <T extends Number & Comparable> void sortInPlace(List<Range<T>> ranges) { Collections.sort(ranges, new RangeComparator(new RangeExtendedComparator<T>())); }
/** * Sorts a collection of ranges into ascending order of min value, then max value. * Returns a new List of sorted ranges, leaving the input collection unmodified. * * @param <T> the value type * @param ranges the ranges to sort * * @return sorted ranges as a {@code List} */ public static <T extends Number & Comparable> List<Range<T>> sort(Collection<Range<T>> ranges) { List<Range<T>> copy = new ArrayList<Range<T>>(ranges); Collections.sort(copy, new RangeComparator(new RangeExtendedComparator<T>())); return copy; }
/** * Compares this Range to another Range. Range comparisons are more involved * than comparisons between point values. There are 18 distinct comparison * results as described by Hayes (2003). See {@linkplain RangeComparator} for * more details. * * @param other the other Range * @return a RangeComparator.Result enum identifying the relationship from the * point of view of this Range */ RangeExtendedComparator.Result compareTo(Range<T> other) { RangeExtendedComparator<T> rc = new RangeExtendedComparator<T>(); return rc.compare(this, other); } }
final int elements = sortedRanges.size(); if (elements > 1) { RangeExtendedComparator rc = new RangeExtendedComparator(); List<Range> rr = (List<Range>) sortedRanges; for (int i = 0; i < elements - 1; i++) {
RangeExtendedComparator<T> comparator = new RangeExtendedComparator<T>();
RangeExtendedComparator<T> rc = new RangeExtendedComparator<T>(); RangeExtendedComparator.Result result = rc.compare(common, r2);
RangeExtendedComparator<T> rc = new RangeExtendedComparator<T>(); RangeExtendedComparator.Result result = rc.compare(r1, r2); if (RangeExtendedComparator.isIntersection(result)) {