net.sf.saxon.expr.sort
Class IntRangeSet

java.lang.Object
  extended by net.sf.saxon.expr.sort.AbstractIntSet
      extended by 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:
Serialized Form

Constructor Summary
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
 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(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
 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
 String toString()
           
 
Methods inherited from class net.sf.saxon.expr.sort.AbstractIntSet
containsAll, except, intersect, union
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.saxon.expr.sort.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:
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

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



Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.