package org.neo4j.helpers.collection; import java.util.Iterator; /** * Wraps an {@link Iterator} so that it returns items of another type. The * iteration is done lazily. * * @param <T> the type of items to return * @param <U> the type of items to wrap/convert from */ public abstract class IteratorWrapper<T, U> implements Iterator<T> { private Iterator<U> source; public IteratorWrapper( Iterator<U> iteratorToWrap ) { this.source = iteratorToWrap; } public boolean hasNext() { return this.source.hasNext(); } public T next() { return underlyingObjectToObject( this.source.next() ); } public void remove() { this.source.remove(); } protected abstract T underlyingObjectToObject( U object ); }