public static <T> FunctionalIterator<T> create(Iterator<T> delegate) { return new FunctionalIterator<>(delegate); }
public <RetType> FunctionalIterator<RetType> transform(Function<T, RetType> fn) { return new FunctionalIterator<>(Iterators.transform(delegate, fn)); }
public FunctionalIterator<T> filter(Predicate<T> pred) { return new FunctionalIterator<>(Iterators.filter(delegate, pred)); }
public <RetType> FunctionalIterator<RetType> transformCat(Function<T, Iterator<RetType>> fn) { return new FunctionalIterator<>(Iterators.concat(Iterators.transform(delegate, fn))); }
public <RetType> FunctionalIterator<RetType> keep(Function<T, RetType> fn) { return new FunctionalIterator<>(Iterators.filter(Iterators.transform(delegate, fn), Predicates.notNull())); }
public FunctionalIterator<T> drop(int numToDrop) { return new FunctionalIterator<>(new DroppingIterator<>(delegate, numToDrop)); }
public static <T> FunctionalIterator<T> create(Iterator<T> delegate) { return new FunctionalIterator<>(delegate); }
public FunctionalIterator<T> filter(Predicate<T> pred) { return new FunctionalIterator<>(Iterators.filter(delegate, pred)); }
public <RetType> FunctionalIterator<RetType> transform(Function<T, RetType> fn) { return new FunctionalIterator<>(Iterators.transform(delegate, fn)); }
public <RetType> FunctionalIterator<RetType> transformCat(Function<T, Iterator<RetType>> fn) { return new FunctionalIterator<>(Iterators.concat(Iterators.transform(delegate, fn))); }
public <RetType> FunctionalIterator<RetType> keep(Function<T, RetType> fn) { return new FunctionalIterator<>(Iterators.filter(Iterators.transform(delegate, fn), Predicates.notNull())); }
public FunctionalIterator<T> drop(int numToDrop) { return new FunctionalIterator<>(new DroppingIterator<>(delegate, numToDrop)); }