package org.trie4j.util;
import java.util.Iterator;
public abstract class IterableAdapter<T, U> implements Iterable<U>{
public IterableAdapter(Iterable<T> orig) {
this.orig = orig;
}
@Override
public Iterator<U> iterator() {
final Iterator<T> it = orig.iterator();
return new Iterator<U>(){
@Override
public boolean hasNext() {
return it.hasNext();
}
@Override
public U next() {
return convert(it.next());
}
@Override
public void remove() {
it.remove();
};
};
}
protected abstract U convert(T value);
private Iterable<T> orig;
}