力扣——頂端迭代器

給定一個迭代器類的接口,接口包含兩個方法:?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.pswp.cn/news/449736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449736.shtml
英文地址,請注明出處:http://en.pswp.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…