package org.osgl.util; import org.osgl.$; import java.util.Iterator; /** * Created with IntelliJ IDEA. * User: luog * Date: 23/10/13 * Time: 8:51 PM * To change this template use File | Settings | File Templates. */ class CompositeIterator<T> extends StatefulIterator<T> { private final Iterator<? extends T> left_; private final Iterator<? extends T> right_; private volatile boolean leftOver_; CompositeIterator(Iterator<? extends T> i1, Iterator<? extends T> i2) { E.NPE(i1, i2); left_ = i1; right_ = i2; } @Override protected $.Option<T> getCurrent() { if (leftOver_) { if (right_.hasNext()) { return $.some(right_.next()); } else { return $.none(); } } else { if (left_.hasNext()) { return $.some(left_.next()); } else { leftOver_ = true; return getCurrent(); } } } }