package er.neo4jadaptor.utils.iteration;
import java.util.Iterator;
public class FlattenedIterator <V> implements Iterator<V> {
private final Iterator<? extends Iterator<V>> it;
private Iterator<V> internal;
public FlattenedIterator(Iterator<? extends Iterator<V>> it) {
this.it = it;
}
protected Iterator<? extends Iterator<V>> external() {
return it;
}
protected Iterator<V> internal() {
return internal;
}
private boolean internalHasNext() {
return internal != null && internal.hasNext();
}
public boolean hasNext() {
while (! internalHasNext() && it.hasNext()) {
internal = it.next();
}
return internal != null && internal.hasNext();
}
public V next() {
return internal.next();
}
public void remove() {
internal.remove();
}
}