Package net.sf.saxon.z

## Class IntRangeSet

- java.lang.Object
- - net.sf.saxon.z.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`

    - ### Methods inherited from interface net.sf.saxon.z.IntSet

      `containsAll, except, intersect, union`

- - ### 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