## 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:
  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)
Author:
  Chris Povirk

Constructor Summary
`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
`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()

Copyright © 2010-2012. All Rights Reserved.