package com.googlecode.totallylazy.iterators;
import com.googlecode.totallylazy.Iterators;
import com.googlecode.totallylazy.Sequence;
import java.util.Iterator;
import static com.googlecode.totallylazy.Sequences.sequence;
public final class TransposeIterator<T> extends ReadOnlyIterator<Sequence<T>> {
private final Sequence<Iterator<T>> iterators;
public TransposeIterator(Iterable<? extends Iterator<? extends T>> iterators) {
this.iterators = sequence(iterators).realise().unsafeCast();
}
public final boolean hasNext() {
return iterators.forAll(Iterators.<T>hasNext());
}
public final Sequence<T> next() {
return iterators.map(Iterators.<T>next()).realise();
}
}