Class Interval

  • public class Interval
    extends Object
    An immutable inclusive interval a..b
    • Field Detail


        public static final int INTERVAL_POOL_MAX_VALUE
        See Also:
        Constant Field Values
      • INVALID

        public static final Interval INVALID
      • a

        public int a
      • b

        public int b
    • Constructor Detail

      • Interval

        public Interval​(int a,
                        int b)
    • Method Detail

      • of

        public static Interval of​(int a,
                                  int b)
        Interval objects are used readonly so share all with the same single value a==b up to some max size. Use an array as a perfect hash. Return shared object for 0..INTERVAL_POOL_MAX_VALUE or a new Interval object with a..a in it. On Java.g4, 218623 IntervalSets have a..a (set with 1 element).
      • length

        public int length()
        return number of elements between a and b inclusively. x..x is length 1. if b < a, then length is 0. 9..10 has length 2.
      • hashCode

        public int hashCode()
        hashCode in class Object
      • startsBeforeDisjoint

        public boolean startsBeforeDisjoint​(Interval other)
        Does this start completely before other? Disjoint
      • startsBeforeNonDisjoint

        public boolean startsBeforeNonDisjoint​(Interval other)
        Does this start at or before other? Nondisjoint
      • startsAfter

        public boolean startsAfter​(Interval other)
        Does this.a start after other.b? May or may not be disjoint
      • startsAfterDisjoint

        public boolean startsAfterDisjoint​(Interval other)
        Does this start completely after other? Disjoint
      • startsAfterNonDisjoint

        public boolean startsAfterNonDisjoint​(Interval other)
        Does this start after other? NonDisjoint
      • disjoint

        public boolean disjoint​(Interval other)
        Are both ranges disjoint? I.e., no overlap?
      • adjacent

        public boolean adjacent​(Interval other)
        Are two intervals adjacent such as 0..41 and 42..42?
      • properlyContains

        public boolean properlyContains​(Interval other)
      • union

        public Interval union​(Interval other)
        Return the interval computed from combining this and other
      • intersection

        public Interval intersection​(Interval other)
        Return the interval in common between this and o
      • differenceNotProperlyContained

        public Interval differenceNotProperlyContained​(Interval other)
        Return the interval with elements from this not in other; other must not be totally enclosed (properly contained) within this, which would result in two disjoint intervals instead of the single one returned by this method.