
no.motif.iter.FlatMappingIterable Maven / Gradle / Ivy
package no.motif.iter;
import java.io.Serializable;
import java.util.Iterator;
import no.motif.f.Fn;
class FlatMappingIterable implements Iterable, Serializable {
private final Iterable elements;
private final Fn super I, ? extends Iterable> fn;
public FlatMappingIterable(Iterable elements, Fn super I, ? extends Iterable> fn) {
this.elements = elements;
this.fn = fn;
}
@Override
public Iterator iterator() {
return new FlatMappingIterator();
}
private final class FlatMappingIterator extends ReadOnlyIterator {
Iterator iterator = elements.iterator();
Iterator mapped = EmptyIterator.instance();
@Override
public boolean hasNext() {
if (!mapped.hasNext() && iterator.hasNext()) {
mapped = fn.$(iterator.next()).iterator();
}
return mapped.hasNext();
}
@Override
public O next() {
return mapped.next();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy