Class IntRangeSet

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

public class IntRangeSet extends AbstractIntSet implements Serializable, IntSet
Set of int values. This implementation of IntSet uses a sorted array of integer ranges.
Author:
Michael Kay
See Also:
  • 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
    • 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
    • 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 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
    • 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