org.apache.commons.collections4.iterators

## Class IteratorIterable<E>

- java.lang.Object
- - org.apache.commons.collections4.iterators.IteratorIterable<E>

- All Implemented Interfaces:
    Iterable<E>

      public class IteratorIterable<E>
      extends Object
      implements Iterable<E>

  Adapter to make an `Iterator` instance appear to be an `Iterable` instance. The iterable can be constructed in one of two variants: single use, multiple use.

  In the single use iterable case, the iterable is only usable for one iterative operation over the source iterator. Subsequent iterative operations use the same, exhausted source iterator. To create a single use iterable, construct a new `IteratorIterable` using a `Iterator` that is NOT a `ResettableIterator` iterator:

         Iterator<Integer> iterator = // some non-resettable iterator
         Iterable<Integer> iterable = new IteratorIterable<Integer>(iterator);

  In the multiple use iterable case, the iterable is usable for any number of iterative operations over the source iterator. Of special note, even though the iterable supports multiple iterations, it does not support concurrent iterations. To implicitly create a multiple use iterable, construct a new `IteratorIterable` using a `ResettableIterator` iterator:

         Integer[] array = {Integer.valueOf(1),Integer.valueOf(2),Integer.valueOf(3)};
         Iterator<Integer> iterator = IteratorUtils.arrayIterator(array); // a resettable iterator
         Iterable<Integer> iterable = new IteratorIterable<Integer>(iterator);

  A multiple use iterable can also be explicitly constructed using any `Iterator` and specifying `true` for the `multipleUse` flag:

         Iterator<Integer> iterator = // some non-resettable iterator
         Iterable<Integer> iterable = new IteratorIterable<Integer>(iterator, true);

  Since:
    4.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `IteratorIterable(Iterator<? extends E> iterator)` Constructs a new `IteratorIterable` that will use the given iterator.
    `IteratorIterable(Iterator<? extends E> iterator, boolean multipleUse)` Constructs a new `IteratorIterable` that will use the given iterator.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Iterator<E>` | `iterator()` Gets the iterator wrapped by this iterable.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### IteratorIterable

          public IteratorIterable(Iterator<? extends E> iterator)

      Constructs a new `IteratorIterable` that will use the given iterator.
      Parameters:
        `iterator` - the iterator to use.

    - #### IteratorIterable

          public IteratorIterable(Iterator<? extends E> iterator,
                                  boolean multipleUse)

      Constructs a new `IteratorIterable` that will use the given iterator.
      Parameters:
        `iterator` - the iterator to use.
        `multipleUse` - `true` if the new iterable can be used in multiple iterations

  - ### Method Detail

    - #### iterator

          public Iterator<E> iterator()

      Gets the iterator wrapped by this iterable.
      Specified by:
        `iterator` in interface `Iterable<E>`
      Returns:
        the iterator

Copyright © 2001–2018 The Apache Software Foundation. All rights reserved.