package bjc.utils.data; import java.util.Iterator; public class CircularIterator implements Iterator { private Iterable source; private Iterator curr; public CircularIterator(Iterable src) { source = src; curr = source.iterator(); } public boolean hasNext() { // We always have something return true; } public E next() { if(curr.hasNext()) { return curr.next(); } else { curr = source.iterator(); return curr.next(); } } public void remove() { curr.remove(); } }