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