Peeking Iterator 解答
2015-10-08 10:45
274 查看
Question
Given an Iterator class interface with methods:next()and
hasNext(), design and implement a PeekingIterator that support the
peek()operation -- it essentially peek() at the element that will be returned by the next call to next().
Here is an example. Assume that the iterator is initialized to the beginning of the list:
[1, 2, 3].
Call
next()gets you 1, the first element in the list.
Now you call
peek()and it returns 2, the next element. Calling
next()after that still return 2.
You call
next()the final time and it returns 3, the last element. Calling
hasNext()after that should return false.
Solution
Key to the solution is to cache status and value ahead.// Java Iterator interface reference: // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html class PeekingIterator implements Iterator<Integer> { private Iterator<Integer> iterator; private int current; private int peekValue; private boolean hasNext; public PeekingIterator(Iterator<Integer> iterator) { // initialize any member here. this.iterator = iterator; hasNext = this.iterator.hasNext(); if (hasNext) peekValue = this.iterator.next(); } // Returns the next element in the iteration without advancing the iterator. public Integer peek() { return peekValue; } // hasNext() and next() should behave the same as in the Iterator interface. // Override them if needed. @Override public Integer next() { current = peekValue; hasNext = iterator.hasNext(); // Note here we need check hasNext, otherwise it will report runtime error if (hasNext) peekValue = iterator.next(); return current; } @Override public boolean hasNext() { return hasNext; } }
相关文章推荐
- AF网络封装
- Java基本类型与引用类型
- Redis服务器搭建/配置/及Jedis客户端的使用方法
- QWS Server
- hdu 5137(2014广州—最短路)
- hdu 5137(2014广州—最短路)
- android开发
- 卷积算子计算方法(卷积运算)
- 微软Windows 10硬件新品发布会
- Codeforces Round #323 (Div. 2) (ABCD题解)
- Android应用开发之所有动画使用详解
- Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- 实现form表单提交到服务器,并且在将表单内容返回到该页面
- eclipse 调试时出现 Error: [Errno 10013]
- Tomcat ClassLoader机制介绍
- 目前调试移动设备程序只能通过USB线缆
- 简单介绍不用库(框架)自己写ajax
- 删除微软输入新体验 2010
- 目前调试移动设备程序只能通过USB线缆
- 目前调试移动设备程序只能通过USB线缆