Class IntRangeSet

java.lang.Object
net.sf.saxon.sort.IntRangeSet
All Implemented Interfaces:
Serializable, IntSet

public class IntRangeSet extends Object implements Serializable, IntSet
Set of int values. This implementation of IntSet uses a sorted array of integer ranges.
Author:
Michael Kay
See Also:
  • Constructor Summary

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

    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 the contents of the IntSet (making it an empty set)
    boolean
    contains(int value)
    Determine whether a particular integer is present in the set
    boolean
    Test if this set is a superset of another set
    boolean
    equals(Object other)
    Test whether this set has exactly the same members as another set.
    int[]
    Get the end points of the ranges
    int
    Get the number of ranges actually in use
    int[]
    Get the start points of the ranges
    int
    Construct a hash key that supports the equals() test
    boolean
    Determine if the set is empty
    Get an iterator over the values
    boolean
    remove(int value)
    Remove an integer from the set
    int
    Get the number of integers in the set
     

    Methods inherited from class java.lang.Object

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

    • 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:
      IllegalArgumentException - if the two arrays are different lengths. Other error conditions in the input are not currently detected.
  • Method Details

    • 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
    • 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
    • toString

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

      public boolean equals(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 Object
    • hashCode

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

      public boolean containsAll(IntSet other)
      Test if this set is a superset of another set
      Specified by:
      containsAll in interface IntSet
    • 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