// Java Iterator interface reference: // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html class PeekingIterator implements Iterator { private Iterator iter; private Integer peek; public PeekingIterator(Iterator iterator) { // initialize any member here. this.iter = iterator; } // Returns the next element in the iteration without advancing the iterator. public Integer peek() { if (this.peek == null) this.peek = this.iter.next(); return this.peek; } // hasNext() and next() should behave the same as in the Iterator interface. // Override them if needed. @Override public Integer next() { if (this.peek == null) return this.iter.next(); Integer next = this.peek; this.peek = null; return next; } @Override public boolean hasNext() { return peek != null || this.iter.hasNext(); } }