com.google.common.collect

## Class AbstractSequentialIterator<T>

- java.lang.Object
- - com.google.common.collect.UnmodifiableIterator<T>
  - - com.google.common.collect.AbstractSequentialIterator<T>

- All Implemented Interfaces:
    java.util.Iterator<T>

      @GwtCompatible
      public abstract class AbstractSequentialIterator<T>
      extends UnmodifiableIterator<T>

  This class provides a skeletal implementation of the `Iterator` interface for sequences whose next element can always be derived from the previous element. Null elements are not supported, nor is the `UnmodifiableIterator.remove()` method.

  Example:

         Iterator<Integer> powersOfTwo =
             new AbstractSequentialIterator<Integer>(1) {
               protected Integer computeNext(Integer previous) {
                 return (previous == 1 << 30) ? null : previous * 2;
               }
             };

  Since:
    12.0 (in Guava as `AbstractLinkedIterator` since 8.0)

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractSequentialIterator(T firstOrNull)` Creates a new iterator with the given first element, or, if `firstOrNull` is null, creates a new empty iterator.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract T` | `computeNext(T previous)` Returns the element that follows `previous`, or returns `null` if no elements remain.
    `boolean` | `hasNext()`
    `T` | `next()`

    - ### Methods inherited from class com.google.common.collect.UnmodifiableIterator

      `remove`

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

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

- - ### Constructor Detail

    - #### AbstractSequentialIterator

          protected AbstractSequentialIterator(@Nullable
                                    T firstOrNull)

      Creates a new iterator with the given first element, or, if `firstOrNull` is null, creates a new empty iterator.

  - ### Method Detail

    - #### computeNext

          protected abstract T computeNext(T previous)

      Returns the element that follows `previous`, or returns `null` if no elements remain. This method is invoked during each call to `next()` in order to compute the result of a future call to `next()`.

    - #### hasNext

          public final boolean hasNext()

    - #### next

          public final T next()