@Override public boolean hasNext() { switch (currentState) { case DONE: return false; case NOT_STARTED: currentState = State.HAS_DATA; next = computeNext(); break; case HAS_DATA: return true; case EMPTY: currentState = State.HAS_DATA; next = computeNext(); break; } return currentState != State.DONE; }
@Override public T next() { if (hasNext()) { T r = next; currentState = State.EMPTY; return r; } else { throw new NoSuchElementException(); } }
@Override public T next() { if (hasNext()) { T r = next; currentState = State.EMPTY; return r; } else { throw new NoSuchElementException(); } }
@Override public boolean hasNext() { switch (currentState) { case DONE: return false; case NOT_STARTED: currentState = State.HAS_DATA; next = computeNext(); break; case HAS_DATA: return true; case EMPTY: currentState = State.HAS_DATA; next = computeNext(); break; } return currentState != State.DONE; }
@Override public T next() { if (hasNext()) { T r = next; currentState = State.EMPTY; return r; } else { throw new NoSuchElementException(); } }
@Override public boolean hasNext() { switch (currentState) { case DONE: return false; case NOT_STARTED: currentState = State.HAS_DATA; next = computeNext(); break; case HAS_DATA: return true; case EMPTY: currentState = State.HAS_DATA; next = computeNext(); break; } return currentState != State.DONE; }