Class IntRangeSet

  • All Implemented Interfaces:
    IntSet

    public class IntRangeSet
    extends java.lang.Object
    implements IntSet
    Set of int values. This implementation of IntSet uses a sorted array of integer ranges.
    • Constructor Summary

      Constructors 
      Constructor Description
      IntRangeSet()
      Create an empty set
      IntRangeSet​(int[] startPoints, int[] endPoints)
      Create an IntRangeSet given the start points and end points of the integer ranges.
      IntRangeSet​(IntRangeSet input)
      Create one IntRangeSet as a copy of another
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean add​(int value)
      Add an integer to the set
      void addRange​(int low, int high)
      Add a range of integers to the set.
      void clear()
      Clear the contents of the IntSet (making it an empty set)
      boolean contains​(int value)
      Determine whether a particular integer is present in the set
      IntSet copy()
      Create a copy of this IntSet that leaves the original unchanged.
      boolean equals​(java.lang.Object other)
      Test whether this set has exactly the same members as another set.
      int[] getEndPoints()
      Get the end points of the ranges
      int getNumberOfRanges()
      Get the number of ranges actually in use
      int[] getStartPoints()
      Get the start points of the ranges
      int hashCode()
      Construct a hash key that supports the equals() test
      boolean isEmpty()
      Determine if the set is empty
      boolean isMutable()
      Ask whether the set permits in-situ modifications using add() and remove()
      IntIterator iterator()
      Get an iterator over the values
      IntSet mutableCopy()
      Create a copy of this IntSet that contains the same set of integers.
      boolean remove​(int value)
      Remove an integer from the set
      int size()
      Get the number of integers in the set
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • IntRangeSet

        public IntRangeSet()
        Create an empty set
      • IntRangeSet

        public IntRangeSet​(IntRangeSet input)
        Create one IntRangeSet as a copy of another
        Parameters:
        input - the IntRangeSet to be copied
      • IntRangeSet

        public IntRangeSet​(int[] startPoints,
                           int[] endPoints)
        Create an IntRangeSet given the start points and end points of the integer ranges. The two arrays must be the same length; each must be in ascending order; and the n'th end point must be greater than the n'th start point, and less than the n+1'th start point, for all n.
        Parameters:
        startPoints - the start points of the integer ranges
        endPoints - the end points of the integer ranges
        Throws:
        java.lang.IllegalArgumentException - if the two arrays are different lengths. Other error conditions in the input are not currently detected.
    • Method Detail

      • clear

        public void clear()
        Description copied from interface: IntSet
        Clear the contents of the IntSet (making it an empty set)
        Specified by:
        clear in interface IntSet
      • copy

        public IntSet copy()
        Description copied from interface: IntSet
        Create a copy of this IntSet that leaves the original unchanged.
        Specified by:
        copy in interface IntSet
        Returns:
        an IntSet containing the same integers. The result will not necessarily be the same class as the original. It will either be an immutable object, or a newly constructed object.
      • mutableCopy

        public IntSet mutableCopy()
        Description copied from interface: IntSet
        Create a copy of this IntSet that contains the same set of integers.
        Specified by:
        mutableCopy in interface IntSet
        Returns:
        an IntSet containing the same integers. The result will not necessarily be the same class as the original. It will always be a mutable object
      • isMutable

        public boolean isMutable()
        Description copied from interface: IntSet
        Ask whether the set permits in-situ modifications using add() and remove()
        Specified by:
        isMutable in interface IntSet
      • size

        public int size()
        Description copied from interface: IntSet
        Get the number of integers in the set
        Specified by:
        size in interface IntSet
        Returns:
        the size of the set
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: IntSet
        Determine if the set is empty
        Specified by:
        isEmpty in interface IntSet
        Returns:
        true if the set is empty, false if not
      • contains

        public boolean contains​(int value)
        Description copied from interface: IntSet
        Determine whether a particular integer is present in the set
        Specified by:
        contains in interface IntSet
        Parameters:
        value - the integer under test
        Returns:
        true if value is present in the set, false if not
      • remove

        public boolean remove​(int value)
        Description copied from interface: IntSet
        Remove an integer from the set
        Specified by:
        remove in interface IntSet
        Parameters:
        value - the integer to be removed
        Returns:
        true if the integer was present in the set, false if it was not present
      • add

        public boolean add​(int value)
        Add an integer to the set
        Specified by:
        add in interface IntSet
        Parameters:
        value - the integer to be added
        Returns:
        true if the integer was added, false if it was already present
      • iterator

        public IntIterator iterator()
        Get an iterator over the values
        Specified by:
        iterator in interface IntSet
        Returns:
        an iterator over the integers in the set
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Test whether this set has exactly the same members as another set. Note that IntRangeSet values are NOT comparable with other implementations of IntSet
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Construct a hash key that supports the equals() test
        Overrides:
        hashCode in class java.lang.Object
      • addRange

        public void addRange​(int low,
                             int high)
        Add a range of integers to the set. This is optimized for the case where these are all greater than any existing integer in the set.
        Parameters:
        low - the low end of the new range
        high - the high end of the new range
      • getStartPoints

        public int[] getStartPoints()
        Get the start points of the ranges
      • getEndPoints

        public int[] getEndPoints()
        Get the end points of the ranges
      • getNumberOfRanges

        public int getNumberOfRanges()
        Get the number of ranges actually in use