## net.sf.saxon.om
Class ArrayIterator

    java.lang.Object
      net.sf.saxon.om.ArrayIterator

All Implemented Interfaces:
  AxisIterator, GroundedIterator, LastPositionFinder, LookaheadIterator, ReversibleIterator, SequenceIterator

public final class ArrayIterator
extends java.lang.Object
implements AxisIterator, ReversibleIterator, LastPositionFinder, LookaheadIterator, GroundedIterator

ArrayIterator is used to enumerate items held in an array. The items are always held in the correct sorted order for the sequence.

Constructor Summary
`ArrayIterator(Item[] nodes)` Create an iterator over all the items in an array
`ArrayIterator(Item[] nodes, int start, int end)` Create an iterator over a range of an array.

Method Summary
`Item` `current()` Get the current item in the array
`SequenceIterator` `getAnother()` Get another iterator over the same items
`Item[]` `getArray()` Get the underlying array
`int` `getEndPosition()` Get the end position in the array
`int` `getLastPosition()` Get the number of items in the part of the array being processed
`SequenceIterator` `getReverseIterator()` Get an iterator that processes the same items in reverse order
`int` `getStartPosition()` Get the initial start position
`boolean` `hasNext()` Test whether there are any more items
`SequenceIterator` `makeSliceIterator(int min, int max)` Create a new ArrayIterator over the same items, with a different start point and end point
`Value` `materialize()` Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator
`Item` `next()` Get the next item in the array
`int` `position()` Get the position of the current item in the array

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ArrayIterator

    public ArrayIterator(Item[] nodes)

  Create an iterator over all the items in an array

Parameters:
  `nodes` - the array (of any items, not necessarily nodes) to be processed by the iterator

### ArrayIterator

    public ArrayIterator(Item[] nodes,
                         int start,
                         int end)

  Create an iterator over a range of an array. Note that the start position is zero-based

Parameters:
  `nodes` - the array (of nodes or simple values) to be processed by the iterator
  `start` - the position of the first item to be processed (numbering from zero)
  `end` - position of first item that is NOT returned, zero-based

Method Detail

### makeSliceIterator

    public SequenceIterator makeSliceIterator(int min,
                                              int max)

  Create a new ArrayIterator over the same items, with a different start point and end point

  Parameters:
    `min` - the start position (1-based) of the new ArrayIterator relative to the original
    `max` - the end position (1-based) of the last item to be delivered by the new ArrayIterator, relative to the original. For example, min=2, max=3 delivers the two items ($base[2], $base[3]). Set this to Integer.MAX_VALUE if there is no end limit.

### hasNext

    public boolean hasNext()

  Test whether there are any more items

  Specified by:
    `hasNext` in interface `LookaheadIterator`
  Returns:
    true if there are more items

### next

    public Item next()

  Get the next item in the array

  Specified by:
    `next` in interface `AxisIterator`
  Returns:
    the next item in the array

### current

    public Item current()

  Get the current item in the array

  Specified by:
    `current` in interface `AxisIterator`
  Returns:
    the item returned by the most recent call of next()

### position

    public int position()

  Get the position of the current item in the array

  Specified by:
    `position` in interface `AxisIterator`
  Returns:
    the current position (starting at 1 for the first item)

### getLastPosition

    public int getLastPosition()

  Get the number of items in the part of the array being processed

  Specified by:
    `getLastPosition` in interface `LastPositionFinder`
  Returns:
    the number of items; equivalently, the position of the last item

### getAnother

    public SequenceIterator getAnother()

  Get another iterator over the same items

  Specified by:
    `getAnother` in interface `AxisIterator`
  Returns:
    a new ArrayIterator

### getReverseIterator

    public SequenceIterator getReverseIterator()

  Get an iterator that processes the same items in reverse order

  Specified by:
    `getReverseIterator` in interface `ReversibleIterator`
  Returns:
    a new ArrayIterator

### getArray

    public Item[] getArray()

  Get the underlying array

  Returns:
    the underlying array being processed by the iterator

### getStartPosition

    public int getStartPosition()

  Get the initial start position

  Returns:
    the start position of the iterator in the array (zero-based)

### getEndPosition

    public int getEndPosition()

  Get the end position in the array

  Returns:
    the position in the array (zero-based) of the first item not included in the iteration

### materialize

    public Value materialize()

  Return a SequenceValue containing all the items in the sequence returned by this SequenceIterator

  Specified by:
    `materialize` in interface `GroundedIterator`
  Returns:
    the corresponding SequenceValue