class PeekingIterator implements Iterator { private Iterator it; private Integer pVal; private boolean pHasNext; public PeekingIterator(Iterator iterator) { it = iterator; next(); } public Integer peek() { return pVal; } @Override public Integer next() { pHasNext = it.hasNext(); Integer oldValue = pVal; if (pHasNext) { pVal = it.next(); } return oldValue; } @Override public boolean hasNext() { return pHasNext; } }