Google Interview - Peek Iterator

Suppose you have a Iterator class with has_next() and get_next() methods.

Please design and implement a PeekIterator class as a wrapper of Iterator and provide a peek() method.

When calling peek(), the user will only get the current element without moving forward the iterator.

Note: For Java solution we will use JDK's Iterator class, so the methods would be hasNext() and next().

public class PeekIterator {
    Iterator it;
    Integer top;
    public PeekIterator(Iterator it) {
        this.it = it;
    }
    
    public int peek() {
        if(top == null)
            top = (Integer)it.next();
        return top;
    }
    
    public boolean has_next() {
        return top != null ? true : it.hasNext();
    }
    
    public int get_next() {
        Integer val = top;
        if(val == null) 
            val = (Integer)it.next();
        top = null;
        return val;
    }
}

猜你喜欢

转载自yuanhsh.iteye.com/blog/2228680