/*
* Author: tdanford
* Date: Apr 4, 2009
*/
package org.seqcode.gsebricks.iterators;
import java.util.Iterator;
import org.seqcode.gseutils.ArrayUtils;
public class SerialIterator<X> implements Iterator<X> {
private Iterator<Iterator<X>> itritr;
private Iterator<X> itr;
public SerialIterator(Iterator<X>... itrs) {
this(ArrayUtils.asIterator(itrs));
}
public SerialIterator(Iterator<Iterator<X>> iis) {
itritr = iis;
itr = null;
while((itr == null || !itr.hasNext()) && itritr.hasNext()) {
itr = itritr.next();
}
}
public boolean hasNext() {
return itr != null && itr.hasNext();
}
public X next() {
X val = itr.next();
while(!itr.hasNext() && itritr.hasNext()) {
itr = itritr.next();
}
return val;
}
public void remove() {
itr.remove();
}
}