public abstract class AbstractSequentialIterator<T> extends UnmodifiableIterator<T>
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;
}
};
AbstractLinkedIterator since 8.0)| Modifier and Type | Field and Description |
|---|---|
private T |
nextOrNull |
| 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. |
| 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() |
remove@CheckForNull private T nextOrNull
protected AbstractSequentialIterator(@CheckForNull
T firstOrNull)
firstOrNull is null,
creates a new empty iterator.@CheckForNull protected abstract T computeNext(T previous)
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().public final boolean hasNext()
public final T next()