Iterator II

boolean hasNext();

T next();

Peek Iterator

support peek() operation and return next() value but doesn't move ptr.

  1. ask for examples

    {1, 2, 3, 4}

    iterator.peek() 1 iterator.next() 1 iterator.peek() 2 iterator.peek() 2 iterator.next() 2 p = 3

  2. Anaylsis

    1. when call peek() : return peekElement
    2. when call next(), return peekElement.
      1. update peekElement.
      2. peekElement = iter.next()
public class PeekIterator {
    private Iterator<Integer> iter;
    Integer peekElement;
    Integer calledNext;
    public PeekIterator(Iterator<Integer> iter) {
        this.iter = iter;
        this.peekElement = null;
    }
    public boolean hasNext() {
        return peekElement != null || iter.hasNext();
    }

    public Integer next() {
        if(hasNext()) {
            Integer ret = null;
            if (peekElement != null) {
                ret = peekElement;
                peekElement = null;
            }  else {  
                ret = iter.next();
                peekElement = iter.next();
            }
            return ret;
        }
        throw NoSuchElementException();
    }
    public Integer peek() {
        if(hasNext()) {
            if(peekElement == null) {
                peekElement = iter.next();
            }        
            return peekElement;
        }
        throw NoSuchElementException();
    }
}

results matching ""

    No results matching ""