1. 程式人生 > >JAVA後端面試必知——ListIterator和Iterator的異同

JAVA後端面試必知——ListIterator和Iterator的異同

在使用Java集合的時候,都需要使用Iterator。但是java集合中還有一個迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的時候可以使用。這兩種迭代器有什麼區別呢?下面我們詳細分析。這裡有一點需要明確的時候,迭代器指向的位置是元素之前的位置。

首先看一下Iterator和ListIterator迭代器的方法有哪些。

Iterator迭代器包含的方法有

  • hasNext():如果迭代器指向位置後面還有元素,則返回 true,否則返回false
  • next():返回集合中Iterator指向位置後面的元素
  • remove():刪除集合中Iterator指向位置後面的元素

ListIterator迭代器包含的方法有

  • add(E e): 將指定的元素插入列表,插入位置為迭代器當前位置之前
  • hasNext():以正向遍歷列表時,如果列表迭代器後面還有元素,則返回 true,否則返回false
  • hasPrevious():如果以逆向遍歷列表,列表迭代器前面還有元素,則返回 true,否則返回false
  • next():返回列表中ListIterator指向位置後面的元素
  • nextIndex():返回列表中ListIterator所需位置後面元素的索引
  • previous():返回列表中ListIterator指向位置前面的元素
  • previousIndex():返回列表中ListIterator所需位置前面元素的索引
  • remove():從列表中刪除next()或previous()返回的最後一個元素(有點拗口,意思就是對迭代器使用hasNext()方法時,刪除ListIterator指向位置後面的元素;當對迭代器使用hasPrevious()方法時,刪除ListIterator指向位置前面的元素)
  • set(E e):從列表中將next()或previous()返回的最後一個元素返回的最後一個元素更改為指定元素e

相同點

  • 都是迭代器,當需要對集合中元素進行遍歷不需要干涉其遍歷過程時,這兩種迭代器都可以使用。

不同點

  • 使用範圍不同,Iterator可以應用於所有的集合,Set、List和Map和這些集合的子型別。而ListIterator只能用於List及其子型別。

  • ListIterator有add方法,可以向List中新增物件,而Iterator不能。

  • ListIterator和Iterator都有hasNext()和next()方法,可以實現順序向後遍歷,但是ListIterator有hasPrevious()和previous()方法,可以實現逆向(順序向前)遍歷。Iterator不可以。

  • ListIterator可以定位當前索引的位置,nextIndex()和previousIndex()可以實現。Iterator沒有此功能。

  • 都可實現刪除操作,但是ListIterator可以實現物件的修改,set()方法可以實現。Iterator僅能遍歷,不能修改。

ArrayList<String> stringArrayList1 = new ArrayList<String>();
        ArrayList<String> stringArrayList2 = new ArrayList<String>();

        stringArrayList1.add("ok");
        stringArrayList1.add("hello");
        stringArrayList1.add("world");

        stringArrayList2.add("好的");
        stringArrayList2.add("你好");
        stringArrayList2.add("世界");

        stringArrayList1.addAll(stringArrayList2);
        ListIterator<String> iterator = stringArrayList1.listIterator();

        System.out.println("從前往後輸出:");
        while (iterator.hasNext()){
            System.out.println("next="+iterator.next());
        }
        System.out.println("\r\n從後往前輸出:");
        while (iterator.hasPrevious()){
            System.out.println("previous="+iterator.previous());
        }

注意:一定要先進行由前向後輸出,之後才能進行由後向前的輸出。

寫在最後

  • 第一:看完點贊,感謝您的認可;
  • ...
  • 第二:隨手轉發,分享知識,讓更多人學習到;
  • ...
  • 第三:記得點關注,每天更新的!!!
  • ...

相關推薦

JAVA面試——ListIteratorIterator異同

在使用Java集合的時候,都需要使用Iterator。但是java集合中還有一個迭代器ListIterator,在使用List、A

java導入excel模板導入excel文件去讀數據

agent xlsx type pos excel文件 從數據 url ring shee 模板轉載地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代碼(我是基於ssm寫的demo,導入文件目前只能讀取.x

工程師會的前端 css 知識

後端工程師雖然大部分工作都是跟伺服器快取資料庫打交道,但有時也需要寫一些前端程式碼。 有些公司的OAM後臺基本是由後端工程師承包的,所以前端基礎知識是必須要掌握的;就算開發中不直接寫前段程式碼,瞭解前端知識能讓我們跟前端小夥伴更愉快的交流。 Js對於後端小夥伴來說不

java 實現WebSocket學習篇客戶Android 通訊

1.建立SpringBoot Java web 專案這裡當你已經熟悉Springboot 2,引入需要的WebSocket maven依賴 org.springframework.boot spring-bo

Java面試總結

前序 今天去面了幾家公司,主要是Java後端的,有個公司問的東西真的是蠻多的,這裡記錄一下印象深一點的問題吧。 Java基礎 int、byte、char各佔幾個位? 注意這裡說的不是位元組,問的是bit位。 我當時就說int 4個位元組,byte

2018百度Java面試真題,你會幾個?

01百度一面1、給一個函式,返回 0 和 1,概率為 p 和 1-p,請你實現一個函式,使得返回

url去重問題(百度Java面試一面第二題)

問題:有10 億個 url,每個 url 大小小於 56B,要求去重,記憶體只給你4G思路:1.首先將給定的url呼叫hash方法計算出對應的hash的value,在10億的url中相同url必然有著相

Java面試經驗總結分享(一)

今天下午兩點的時候,我去面了一家招Java開發的公司,本人工作經驗2年多一丟丟。   跟大部分公司類似,先做一份筆試題,題目都比較簡單,基本都寫完了。我把題目以及答案列在下面一下,給自己做一下總結的,也分享給一些需要的小夥伴,下面答案是我根據網上的進行總結的。   一.抽象類與介面的區別。

【決戰西二旗】|【乾貨】聊聊面試的常見問題一些思考

0.前言 之前寫了一些具體知識點的相關文章,本次聊聊面試實戰。 面試是為了查漏補缺、明確學習方向和斬獲offer,所以寫一些自己以及好朋友們遇到過的面試題、以及個人對面試的一些看法。題目主要來自百度、阿里、騰訊、微博、搜狗、FunPlus、高德、滴滴、快手、曠視、360、迅雷、獵豹、TME等公司。 由於時間原

JavaJava web面試時如何展示自己非技術方面的能力

這篇文章的適用範圍其實不僅限於Java後端或Java Web,不過其中有些是拿這方面舉例的,在其它方面,大家可以舉一反三,應該也能得到些啟示。 我們在面試時,會發現有些候選人技術不錯,比如在Java Web後端方面,Spring MVC框架也做過,資料庫方面不僅有經驗,而且

面試Java開發之後想Java程式設計師談談我的感受

在上週,密集面試了若干位Java後端的候選人,工作經驗在3到5年間。我的標準其實不復雜:第一能幹活,第二Java基礎要好,第三最好熟悉些分散式框架,我相信其它公司招初級開發時,應該也照著這個標準來面的。 我也知道,不少候選人能力其實不差,但面試時沒準備或不會說,這樣的人可能在進團隊幹活後確實能達

面試時我不在乎候選人的經驗來自培訓班,但會關注商業專案經驗幹活能力:再說面試時鑑別商業專案的方式 最近面試java後端開發的感受:如果就以平時專案經驗來面試,通過估計很難——再論面試前的準備

    我在部落格園裡乃至其它地方看到有不少對培訓班出身的程式設計師的評價,其實至少在我面試時,培訓班出來的程式設計師沒有原罪。     我也面試不少程式設計師,從高階開發到初級開發都有,有985和211名校出身的,也有大專學習通過培訓班積累IT經驗的。我見過有候選人

以技術面試官的經驗分享畢業生初級程式設計師通過面試的技巧(Java方向)...

點選上方“Java團長”,選擇“置頂公眾號”乾貨文章第一時間送達!本來想分享畢業生和初級程式設計

4000字乾貨長文!從校招社招的角度說說如何準備Java大廠面試

插個題外話,為了寫好這篇文章內容,我自己前前後後花了一週的時間來總結完善,文章內容應該適用於每一個學習 Java 的朋友!我覺得這篇文章的很多東西也是我自己寫給自己的,比如從大廠招聘要求中我們能看到哪些重要的能力,我們該朝什麼方向努力? 共勉! 下面的文章的部分內容在我早期文章中出現過,老讀者應該一眼就可

JavaScript前端Java的AES加密解密

proto creat eight prop pen 保持 超出範圍 system creator 在實際開發項目中,有些數據在前後端的傳輸過程中需要進行加密,那就需要保證前端和後端的加解密需要統一。這裏給大家簡單演示AES在JavaScript前端和Java後端是如何實現

2018 年,去百度面試 Java 的一次面試經歷

https 請求 遇到 net 簡歷 共享內存 targe 應對 部門 一,百度一面:### 1、給一個函數,返回 0 和 1,概率為 p 和 1-p,請你實現一個函數,使得返回 01 概率一樣。2、10 億個 url,每個 url 大小小於 56B,要求去重,內存 4G。

java匯入excel模板匯入excel檔案去讀資料

模板轉載地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上程式碼(我是基於ssm寫的demo,匯入檔案目前只能讀取.xls字尾的excel檔案) 1 <!--匯入的核心依賴--> 2 <depende

最近面試java開發的感受:如果就以平時專案經驗來面試,通過估計很難——再論面試前的準備

    在上週,我密集面試了若干位Java後端的候選人,工作經驗在3到5年間。我的標準其實不復雜:第一能幹活,第二Java基礎要好,第三最好熟悉些分散式框架,我相信其它公司招初級開發時,應該也照著這個標準來面的。     我也知道,不少候選人能力其實不差,但面試時沒準

【轉載】最近面試java開發的感受:如果就以平時專案經驗來面試,通過估計很難——再論面試前的準備

  在上週,我密集面試了若干位Java後端的候選人,工作經驗在3到5年間。我的標準其實不復雜:第一能幹活,第二Java基礎要好,第三最好熟悉些分散式框架,我相信其它公司招初級開發時,應該也照著這個標準來面的。  我也知道,不少候選人能力其實不差,但面試時沒準備或不會說,這樣的人可能在進團隊幹活後確實能達

Java面經 面試經驗 網際網路公司面試經驗 面試經驗

應聘相關 宣告: 1,程式設計師相關的哈 2,萬事無定論,比如說,就算你小學畢業,但是java基礎卻紮實到變態,我相信open的公司還是會給你機會的。 3,心態很重要,雖然日常的心態不容易控制,面試那倆小時的心態,只要你想,就能控制。 1,先來一份前輩的勸戒 1,