码迷,mamicode.com
首页 > 其他好文 > 详细

284. Peeking Iterator

时间:2016-06-28 12:24:23      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:

/*
 * 284. Peeking Iterator
 * 2016-6-27 by Mingyang
 * 我开始的想法是在peek的时候把next的value返回,然后copy一个iterator
 * 但是太复杂,这里只需要提前把下一个next存起来,那么每次call next的时候
 * 我们就需要把下一个的下一个再存起来
 */
class PeekingIterator implements Iterator<Integer> {  
    private Integer next = null;
    private Iterator<Integer> iter;
    public PeekingIterator(Iterator<Integer> iterator) {
        // initialize any member here.
        iter = iterator;
        if (iter.hasNext())
            next = iter.next();
    }
    // Returns the next element in the iteration without advancing the iterator. 
    public Integer peek() {
        return next; 
    }
    // hasNext() and next() should behave the same as in the Iterator interface.
    // Override them if needed.
    @Override
    public Integer next() {
        Integer res = next;
        next = iter.hasNext() ? iter.next() : null;
        return res; 
    }
    @Override
    public boolean hasNext() {
       // return iter.hasNext();
    //这里不能用这个,因为本题的逻辑是提前预支hasNext()并且赋值为next这个变量
        return next != null;
    }
    @Override
    public void remove() {
        // TODO Auto-generated method stub
        
    }
}

 

284. Peeking Iterator

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5622860.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!