博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣——顶端迭代器
阅读量:4641 次
发布时间:2019-06-09

本文共 1392 字,大约阅读时间需要 4 分钟。

给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器 -- 其本质就是把原本应由 next() 方法返回的元素 peek() 出来。

示例:

假设迭代器被初始化为列表 [1,2,3]。调用 next() 返回 1,得到列表中的第一个元素。现在调用 peek() 返回 2,下一个元素。在此之后调用 next() 仍然返回 2。最后一次调用 next() 返回 3,末尾元素。在此之后调用 hasNext() 应该返回 false。

进阶:你将如何拓展你的设计?使之变得通用化,从而适应所有的类型,而不只是整数型?

 

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

 

转载于:https://www.cnblogs.com/JAYPARK/p/10479669.html

你可能感兴趣的文章
chkconfig
查看>>
TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
查看>>
最强的篮球队和马尔可夫模型
查看>>
pyQt 每日一练习 -- 登录框
查看>>
wp 删除独立存储空间文件(多级非空文件夹删除)
查看>>
Loadrunner安装使用入门
查看>>
smartupload 上传文件时 把页面编码改成gbk 解决乱码
查看>>
EPS是什么格式
查看>>
Python的数据库操作(Sqlalchemy)
查看>>
2.抽取代码(BaseActivity)
查看>>
My simplified pickit2 clone
查看>>
Redis 入门知识
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
转--Android如何在java代码中设置margin
查看>>
反射的所有api
查看>>
css 定位及遮罩层小技巧
查看>>
项目中非常有用并且常见的ES6语法
查看>>
[2017.02.23] Java8 函数式编程
查看>>
Knowledge Point 20180305 数据在计算机中的表示
查看>>
谈谈对web标准的理解
查看>>