力扣——顶端迭代器

给定一个迭代器类的接口,接口包含两个方法: 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.html
class PeekingIterator implements Iterator<Integer> {private Iterator<Integer> mIterator;private Integer next;public PeekingIterator(Iterator<Integer> 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.
    @Overridepublic Integer next() {if (next == null) {return mIterator.next();} else {Integer temp = next;next = null;return temp;}}@Overridepublic boolean hasNext() {return next != null || mIterator.hasNext();}
}

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五步让你成为专家级程序员

摘要&#xff1a;Mark Lassoff是一位高级技术培训师&#xff0c;从事培训工作已有10余年。他培训的客户包括美国国防部、Lockheed Martin等。在多年的培训生涯中&#xff0c;他总结了一些如何快速学习一门语言的技巧&#xff0c;这些技巧非常简单&#xff0c;但是却让人受益匪浅…

Ionic混合移动app框架学习

第一章 绪论创建移动app有三种安卓原生App&#xff0c;使用java语言&#xff0c;目前推荐kotlin语言&#xff0c;开发工具Android studioIOS原生App&#xff0c;使用Objective-C或者Swift语言&#xff0c;开发工具Xcode混合移动App&#xff0c;使用web通用语言&#xff08;HTML…

IPC 中 LPC、RPC 的区别和联系

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 进程间通信&#xff08;IPC&#xff0c;Inter-Process Communication&#xff09;&#xff0c;指至少两个进程或线程间传送数据或信号的…

Laravel 使用 Aliyun OSS 云存储

对象存储 ( Object Storage Service, 简称 OSS ) OSS 相信大家都听过, 它是阿里云对外提供的海量, 安全和高可靠的云存储服务. 大家可以把自己网站的资源存上面加快自己网站速度, aliyun 官网也有文档不过对于新手来说有点难, 那么这里我给大家推荐一个组件和组件的使用. johnl…

python多级索引修改

创建多级索引 cols pd.MultiIndex.from_tuples([("a","b"), ("a","c")]) pd.DataFrame([[1,2], [3,4]], columnscols) abc012134 df.columns df.columns.droplevel() df bc012134

在线学习新编程 技巧全攻略

摘要&#xff1a;有句俗语叫&#xff1a;“技多不压身”&#xff0c;如果你有时间和兴趣&#xff0c;不妨多了解和掌握编程技能&#xff0c;或许随时可能有用。本文为你收集了一些编程技巧&#xff0c;让你轻松学编程。 有句俗语叫&#xff1a;“技多不压身”&#xff0c;如果你…

第 3 章 镜像 - 018 - 镜像命名的最佳实践

为镜像命名 创建镜像时 docker build 命令时已经为镜像取了个名字&#xff0c;例如&#xff1a; docker build -t ubuntu-with-vi 这里的 ubuntu-with-vi 就是镜像的名字。通过 dock images 可以查看镜像的信息。 1 rootubuntu:~# docker images ubuntu-with-vi 2 REPOSITORY …

Jmeter逻辑控制器-ForEach Controller

ForEach Controller 介绍 ForEach Contoller 即循环控制器&#xff0c;顾名思义是定义一个规则。主要有以下一个参数&#xff1a;名称&#xff1a;随便填写注释&#xff1a;随便填写输入变量前缀&#xff1a;可以在“用户自定义变量”中定义一组变量。循环控制器可以从中获取到…

微服务实战(三):深入微服务架构的进程间通信

见&#xff1a;http://www.dockone.io/article/549简介 在单体式应用中&#xff0c;各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。但是一个基于微服务的分布式应用是运行在多台机器上的。一般来说&#xff0c;每个服务实例都是一个进程。因此&#xff0c;如下…

python输出与删除某行或某列

python输出字符&#xff0c;主要为结合变量形成新的变量名 year 2016 event Referendum fResults of the {year} {event}Results of the 2016 Referendum yes_votes 42_572_654 no_votes 43_132_495 percentage yes_votes / (yes_votes no_votes) {:-9} YES votes {:2…

为什么应该用模块取代C/C++中的头文件?

摘要&#xff1a;本文整理自Apple C工程师Doug Gregor的演讲Slide&#xff0c;他表示希望使用模块&#xff08;Module&#xff09;这一概念替代C/C中的头文件&#xff0c;现已被C标准化委员会任命为Module研究组的主席&#xff0c;研究该提议的可能性。考虑到Apple的开源项目LL…

北向资金进行股票、期货指数、基金策略

#%%导入包 import tushare as ts import datetime import pandas as pd import numpy as np import akshare as ak import warnings warnings.filterwarnings("ignore")#获取北向资金数据 df_data2 ak.stock_em_hsgt_north_acc_flow_in(indicator"北上") d…

Kong Api 初体验、Kong安装教程

见&#xff1a;https://blog.csdn.net/forezp/article/details/79383631Kong是一个可扩展的开源API层&#xff08;也称为API网关或API中间件&#xff09;。 Kong运行在任何RESTful API的前面&#xff0c;并通过插件扩展&#xff0c;它们提供超出核心平台的额外功能和服务。 Kon…

Spring Boot2.0+中,自定义配置类扩展springMVC的功能

在spring boot1.0&#xff0c;我们可以使用WebMvcConfigurerAdapter来扩展springMVC的功能&#xff0c;其中自定义的拦截器并不会拦截静态资源&#xff08;js、css等&#xff09;。 Configuration public class MyMvcConfig extends WebMvcConfigurerAdapter {Overridepublic v…

从谷歌宕机事件认识互联网工作原理

摘要&#xff1a;谷歌服务器经历了短暂的宕机事件&#xff0c;持续大概27分钟&#xff0c;对部分地区的互联网用户造成了影响。此次事件的原因深究起来需要进入互联网络那深邃的、黑暗的角落。 译者注&#xff1a;本文中提到CloudFlare是一家总部位于美国旧金山的内容分发网络(…

聊聊技术写作的个人体会

有群友问过&#xff0c;是什么原因使我开始写技术公众号&#xff0c;又是什么动力让我坚持写的。 在我看来&#xff0c;写作是一件不能敷衍的事&#xff0c;通过写作来学习&#xff0c;反而要比单纯地学习的效果要好。为了写成一篇“拿得出手”的文章&#xff0c;我要反复查找资…

「2019冬令营提高组」全连

传送门 显然的 $dp$ 设 $f[i]$ 表示点击第 $i$ 个音符时的最大价值&#xff0c;$t[i]$ 表示音符 $i$ 的准备时间 那么可以枚举 $1$ 到 $i-t[i]$ 的所有音符&#xff0c;如果 $j$ &#xff0c;如果 $jt[j]$ 小于等于 $i$ &#xff0c;那么 $f[i]max(f[i],f[j]t[i]*val[i])$ 考虑…

Docker常用命令、超实用、讲解清晰明了(rm、stop、start、kill、logs、diff、top、cp、restart ...)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 查看docker信息&#xff08;version、info&#xff09; # 查看docker版本 $docker version # 显示docker系统的信息 $docker i…

推荐给开发人员的实用命令行工具

摘要&#xff1a;优秀的工具对于定位问题出在何处有着无可估量的价值&#xff0c;而且能在一开始就帮助我们阻止问题的出现&#xff0c;总的来说能使我们的工作更有效率。本文介绍了6个非常强大且灵活的工具&#xff0c;熟练使用这些工具能使你的生活变得更轻松一些。 作为一名…

雷军:启动手机+AIoT双引擎战略 5G春天到来前打持久战

雷帝网 乐天 1月11日报道 小米CEO雷军今日在小米年会上宣布&#xff0c;2019年&#xff0c;小米将正式启动“手机AIoT”双引擎战略&#xff0c;这将是小米未来五年的核心战略。未来5年&#xff0c;小米将在AIoT领域持续投入超过100亿元。从2019年起&#xff0c;AIoT&#xff0c…