# Package net.sf.saxon.tree.iter

This package defines implementations and subinterfaces of the interface SequenceIterator, which is used to iterate over an XDM sequence.

The subinterfaces mostly represent iterators with additional capability: for example a LastPositionFinder can determine the number of items in the sequence without reading to the end; a GroundedIterator can deliver the original sequence as a list in memory; a LookaheadIterator is capable of one-item look-ahead. Note that just because a class implements such an interface does not mean it necessarily has this capability; it is necessary to check the properties of the specific iterator before assuming this.

- Interface Summary
  Interface | Description
  --- | ---
  AtomicIterator<T extends AtomicValue> | A SequenceIterator is used to iterate over a sequence.
  AxisIterator | A SequenceIterator is used to iterate over a sequence of items.
  ConstrainedIterator<T extends Item> | SingletonIterator: an iterator over a sequence of zero or one values
  GroundedIterator | This interface is an extension to the SequenceIterator interface; it represents a SequenceIterator that is based on an in-memory representation of a sequence, and that is therefore capable of returning a Sequence containing all the items in the sequence.
  LookaheadIterator | A SequenceIterator is used to iterate over a sequence.
  NodeWrappingFunction<B,​T extends NodeInfo> | Interface to a function that wraps nodes from an external object model in a Saxon NodeInfo representation
  ReversibleIterator | A ReversibleIterator is an interface implemented by any SequenceIterator that is able to deliver items in reverse order (or to supply another iterator that can do so).
  UnfailingIterator | A SequenceIterator is used to iterate over a sequence.

- Class Summary
  Class | Description
  --- | ---
  AdjacentTextNodeMergingIterator | AdjacentTextNodeMergingIterator is an iterator that eliminates zero-length text nodes and merges adjacent text nodes from the underlying iterator
  ArrayIterator<T extends Item> | ArrayIterator is used to enumerate items held in an array.
  ArrayIterator.OfNodes | ArrayIterator.OfNodes is a subclass of ArrayIterator where the array always contains Nodes; it therefore implements the AxisIterator interface.
  AtomizingIterator | AtomizingIterator returns the atomization of an underlying sequence supplied as an iterator.
  ConcatenatingAxisIterator | An iterator over nodes, that concatenates the nodes returned by two supplied iterators.
  EmptyIterator | EmptyIterator: an iterator over an empty sequence.
  HomogeneityCheckerIterator | An iterator that returns the same items as its base iterator, checking to see that they are either all nodes, or all non-nodes; if they are all nodes, it delivers them in document order.
  ListIterator<T extends Item> | Class ListIterator, iterates over a sequence of items held in a Java List
  ListIterator.Atomic |
  ListIterator.OfNodes |
  LookaheadIteratorImpl | This class wraps any sequence iterator, turning it into a lookahead iterator, by looking ahead one item
  ManualIterator | ManualIterator: a pseudo-iterator used while streaming.
  NodeWrappingAxisIterator<B> | An AxisIterator that wraps a Java Iterator.
  PrependAxisIterator | An iterator over nodes, that prepends a given node to the nodes returned by another iterator.
  PrependSequenceIterator | An iterator over nodes, that prepends a given node to the nodes returned by another iterator.
  ReverseListIterator<T extends Item> | ReverseListIterator is used to enumerate items held in an array in reverse order.
  SingleAtomicIterator<T extends AtomicValue> | SingletonIterator: an iterator over a sequence of zero or one values
  SingleNodeIterator | SingleNodeIterator: an iterator over a sequence of zero or one nodes
  SingletonIterator<T extends Item> | SingletonIterator: an iterator over a sequence of zero or one values
  TextLinesIterator | An iterator that iterates over a file line by line, returning each line as a `StringValue`
  UnparsedTextIterator | Class UnparsedTextIterator, iterates over a file line by line
  UntypedAtomizingIterator | AtomizingIterator returns the atomization of an underlying sequence supplied as an iterator.