net.sf.saxon.sort

Class IntRangeSet

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

Constructor Summary
IntRangeSet()
Create an empty set
IntRangeSet(IntRangeSet input)
Create one IntRangeSet as a copy of another
IntRangeSet(int[] startPoints, int[] endPoints)
Create an IntRangeSet given the start points and end points of the integer ranges.
Method Summary
booleanadd(int value)
Add an integer to the set
voidaddRange(int low, int high)
Add a range of integers to the set.
voidclear()
booleancontains(int value)
booleancontainsAll(IntSet other)
Test if this set is a superset of another set
booleanequals(Object other)
Test whether this set has exactly the same members as another set.
int[]getEndPoints()
Get the end points of the ranges
intgetNumberOfRanges()
Get the number of ranges actually in use
int[]getStartPoints()
Get the start points of the ranges
inthashCode()
Construct a hash key that supports the equals() test
booleanisEmpty()
IntIteratoriterator()
Get an iterator over the values
booleanremove(int value)
intsize()
StringtoString()

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

Method Detail

add

public boolean add(int value)
Add an integer to the set

Parameters: value the integer to be added

Returns: true if the integer was added, false if it was already present

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

clear

public void clear()

contains

public boolean contains(int value)

containsAll

public boolean containsAll(IntSet other)
Test if this set is a superset of another set

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

getEndPoints

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

getNumberOfRanges

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

getStartPoints

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

hashCode

public int hashCode()
Construct a hash key that supports the equals() test

isEmpty

public boolean isEmpty()

iterator

public IntIterator iterator()
Get an iterator over the values

remove

public boolean remove(int value)

size

public int size()

toString

public String toString()