package com.googlecode.totallylazy.iterators;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class IntersperseIterator<T> extends ReadOnlyIterator<T> {
private final Iterator<? extends T> iterator;
private final T separator;
private boolean useSeparator = false;
public IntersperseIterator(Iterator<? extends T> iterator, T separator) {
this.iterator = iterator;
this.separator = separator;
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public T next() {
if(hasNextSeparator()) {
valueNext();
return separator;
}
if(hasNext()) {
separatorNext();
return iterator.next();
}
throw new NoSuchElementException();
}
private void separatorNext() {
useSeparator = true;
}
private void valueNext() {
useSeparator = false;
}
private boolean hasNextSeparator() {
return hasNext() && useSeparator;
}
}