Package groovy.lang

Class ObjectRange

  • All Implemented Interfaces:
    Range<java.lang.Comparable>, java.lang.Iterable<java.lang.Comparable>, java.util.Collection<java.lang.Comparable>, java.util.List<java.lang.Comparable>

    public class ObjectRange
    extends java.util.AbstractList<java.lang.Comparable>
    implements Range<java.lang.Comparable>
    Represents an inclusive list of objects from a value to a value using comparators.

    Note: This class is similar to IntRange. If you make any changes to this class, you might consider making parallel changes to IntRange.

    • Field Summary

      • Fields inherited from class java.util.AbstractList

        modCount
    • Constructor Summary

      Constructors 
      Constructor Description
      ObjectRange​(java.lang.Comparable from, java.lang.Comparable to)
      Creates a new ObjectRange.
      ObjectRange​(java.lang.Comparable smaller, java.lang.Comparable larger, boolean reverse)
      Creates a new ObjectRange assumes smaller <= larger, else behavior is undefined.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void checkBoundaryCompatibility()
      throws IllegalArgumentException if to and from are incompatible, meaning they e.g.
      protected int compareTo​(java.lang.Comparable first, java.lang.Comparable second)  
      boolean contains​(java.lang.Object value)
      Iterates over all values and returns true if one value matches.
      boolean containsWithinBounds​(java.lang.Object value)
      Checks whether a value is between the from and to values of a Range
      protected java.lang.Object decrement​(java.lang.Object value)
      Decrements by one
      boolean equals​(ObjectRange that)
      Compares an ObjectRange to another ObjectRange.
      boolean equals​(java.lang.Object that)  
      java.lang.Comparable get​(int index)  
      java.lang.Comparable getFrom()
      The lower value in the range.
      java.lang.Comparable getTo()
      The upper value in the range.
      protected java.lang.Object increment​(java.lang.Object value)
      Increments by one
      java.lang.String inspect()  
      boolean isReverse()
      Indicates whether this is a reverse range which iterates backwards starting from the to value and ending on the from value
      java.util.Iterator<java.lang.Comparable> iterator()
      int size()  
      java.util.List<java.lang.Comparable> step​(int step)
      Forms a list by stepping through the range by the indicated interval.
      void step​(int step, Closure closure)
      Steps through the range, calling a closure for each item.
      java.util.List<java.lang.Comparable> subList​(int fromIndex, int toIndex)  
      java.lang.String toString()  
      • Methods inherited from class java.util.AbstractList

        add, add, addAll, clear, hashCode, indexOf, lastIndexOf, listIterator, listIterator, remove, removeRange, set
      • Methods inherited from class java.util.AbstractCollection

        addAll, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        add, add, addAll, addAll, clear, containsAll, hashCode, indexOf, isEmpty, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, replaceAll, retainAll, set, sort, spliterator, toArray, toArray
    • Constructor Detail

      • ObjectRange

        public ObjectRange​(java.lang.Comparable from,
                           java.lang.Comparable to)
        Creates a new ObjectRange. Creates a reversed range if from < to.
        Parameters:
        from - the first value in the range.
        to - the last value in the range.
      • ObjectRange

        public ObjectRange​(java.lang.Comparable smaller,
                           java.lang.Comparable larger,
                           boolean reverse)
        Creates a new ObjectRange assumes smaller <= larger, else behavior is undefined. Caution: Prefer the other constructor when in doubt.

        Optimized Constructor avoiding initial computation of comparison.

    • Method Detail

      • checkBoundaryCompatibility

        protected void checkBoundaryCompatibility()
        throws IllegalArgumentException if to and from are incompatible, meaning they e.g. (likely) produce infinite sequences. Called at construction time, subclasses may override cautiously (using only members to and from).
      • equals

        public boolean equals​(java.lang.Object that)
        Specified by:
        equals in interface java.util.Collection<java.lang.Comparable>
        Specified by:
        equals in interface java.util.List<java.lang.Comparable>
        Overrides:
        equals in class java.util.AbstractList<java.lang.Comparable>
      • equals

        public boolean equals​(ObjectRange that)
        Compares an ObjectRange to another ObjectRange.
        Parameters:
        that - the object to check equality with
        Returns:
        true if the ranges are equal
      • getFrom

        public java.lang.Comparable getFrom()
        Description copied from interface: Range
        The lower value in the range.
        Specified by:
        getFrom in interface Range<java.lang.Comparable>
        Returns:
        the lower value in the range.
      • getTo

        public java.lang.Comparable getTo()
        Description copied from interface: Range
        The upper value in the range.
        Specified by:
        getTo in interface Range<java.lang.Comparable>
        Returns:
        the upper value in the range
      • isReverse

        public boolean isReverse()
        Description copied from interface: Range
        Indicates whether this is a reverse range which iterates backwards starting from the to value and ending on the from value
        Specified by:
        isReverse in interface Range<java.lang.Comparable>
        Returns:
        true if this is a reverse range
      • get

        public java.lang.Comparable get​(int index)
        Specified by:
        get in interface java.util.List<java.lang.Comparable>
        Specified by:
        get in class java.util.AbstractList<java.lang.Comparable>
      • containsWithinBounds

        public boolean containsWithinBounds​(java.lang.Object value)
        Checks whether a value is between the from and to values of a Range
        Specified by:
        containsWithinBounds in interface Range<java.lang.Comparable>
        Parameters:
        value - the value of interest
        Returns:
        true if the value is within the bounds
      • compareTo

        protected int compareTo​(java.lang.Comparable first,
                                java.lang.Comparable second)
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<java.lang.Comparable>
        Specified by:
        size in interface java.util.List<java.lang.Comparable>
        Specified by:
        size in class java.util.AbstractCollection<java.lang.Comparable>
      • subList

        public java.util.List<java.lang.Comparable> subList​(int fromIndex,
                                                            int toIndex)
        Specified by:
        subList in interface java.util.List<java.lang.Comparable>
        Overrides:
        subList in class java.util.AbstractList<java.lang.Comparable>
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.util.AbstractCollection<java.lang.Comparable>
      • inspect

        public java.lang.String inspect()
        Specified by:
        inspect in interface Range<java.lang.Comparable>
        Returns:
        the verbose String representation of this Range as would be typed into a console to create the Range instance
      • contains

        public boolean contains​(java.lang.Object value)
        Iterates over all values and returns true if one value matches.
        Specified by:
        contains in interface java.util.Collection<java.lang.Comparable>
        Specified by:
        contains in interface java.util.List<java.lang.Comparable>
        Overrides:
        contains in class java.util.AbstractCollection<java.lang.Comparable>
        See Also:
        containsWithinBounds(Object)
      • step

        public void step​(int step,
                         Closure closure)
        Description copied from interface: Range
        Steps through the range, calling a closure for each item.
        Specified by:
        step in interface Range<java.lang.Comparable>
        Parameters:
        step - the amount by which to step. If negative, steps through the range backwards.
        closure - the Closure to call
      • iterator

        public java.util.Iterator<java.lang.Comparable> iterator()
        Specified by:
        iterator in interface java.util.Collection<java.lang.Comparable>
        Specified by:
        iterator in interface java.lang.Iterable<java.lang.Comparable>
        Specified by:
        iterator in interface java.util.List<java.lang.Comparable>
        Overrides:
        iterator in class java.util.AbstractList<java.lang.Comparable>
      • step

        public java.util.List<java.lang.Comparable> step​(int step)
        Description copied from interface: Range
        Forms a list by stepping through the range by the indicated interval.
        Specified by:
        step in interface Range<java.lang.Comparable>
        Parameters:
        step - the amount by which to step. If negative, steps through the range backwards.
        Returns:
        the list formed by stepping through the range by the indicated interval.
      • increment

        protected java.lang.Object increment​(java.lang.Object value)
        Increments by one
        Parameters:
        value - the value to increment
        Returns:
        the incremented value
      • decrement

        protected java.lang.Object decrement​(java.lang.Object value)
        Decrements by one
        Parameters:
        value - the value to decrement
        Returns:
        the decremented value