package com.googlecode.totallylazy.iterators; import com.googlecode.totallylazy.functions.Function1; import java.util.Iterator; import static com.googlecode.totallylazy.Callers.call; public final class MapIterator<T, S> extends ReadOnlyIterator<S> { private final Iterator<? extends T> iterator; private final Function1<? super T, ? extends S> callable; public MapIterator(final Iterator<? extends T> iterator, final Function1<? super T, ? extends S> callable) { this.iterator = iterator; this.callable = callable; } public final boolean hasNext() { return iterator.hasNext(); } public final S next() { return call(callable, iterator.next()); } }