最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Iterator迭代器的使用詳解

 更新時間:2022年10月20日 11:19:19   作者:共飲一杯無  
在程序開發(fā)中,經(jīng)常需要遍歷集合中的所有元素。針對這種需求,JDK專門提供了一個接口java.util.Iterator。本文就來詳細說說Iterator迭代器的使用,感興趣的可以了解一下

Iterator接口

在程序開發(fā)中,經(jīng)常需要遍歷集合中的所有元素。針對這種需求,JDK專門提供了一個接口java.util.Iterator。Iterator接口也是Java集合中的一員,但它與Collection、Map接口有所不同,Collection接口與Map接口主要用于存儲元素,而Iterator主要用于迭代訪問(即遍歷)Collection中的元素,因此Iterator對象也被稱為迭代器。 想要遍歷Collection集合,那么就要獲取該集合迭代器完成迭代操作,下面介紹一下獲取迭代器的方法:

public Iterator iterator(): 獲取集合對應的迭代器,用來遍歷集合中的元素的。

下面介紹一下迭代的概念:

迭代:即Collection集合元素的通用獲取方式。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續(xù)在判斷,如果還有就再取出出來。一直把集合中的所有元素全部取出。這種取出方式專業(yè)術語稱為迭代。

Iterator接口的常用方法如下:

  • public E next():返回迭代的下一個元素。
  • public boolean hasNext():如果仍有元素可以迭代,則返回 true。

接下來我們通過案例學習如何使用Iterator迭代集合中元素:

public class IteratorDemo {
    public static void main(String[] args) {
        // 使用多態(tài)方式 創(chuàng)建對象
        Collection<String> coll = new ArrayList<String>();

        // 添加元素到集合
        coll.add("張三");
        coll.add("李四");
        coll.add("王五");
        //遍歷
        //使用迭代器 遍歷   每個集合對象都有自己的迭代器
        Iterator<String> it = coll.iterator();
        //  泛型指的是 迭代出 元素的數(shù)據(jù)類型
        while(it.hasNext()){ //判斷是否有迭代元素
            String s = it.next();//獲取迭代出的元素
            System.out.println(s);
        }
    }
}

tips::在進行集合元素取出時,如果集合中已經(jīng)沒有元素了,還繼續(xù)使用迭代器的next方法,將會發(fā)生java.util.NoSuchElementException沒有集合元素的錯誤。

迭代器的實現(xiàn)原理

我們在之前案例已經(jīng)完成了Iterator遍歷集合的整個過程。當遍歷集合時,首先通過調用t集合的iterator()方法獲得迭代器對象,然后使用hashNext()方法判斷集合中是否存在下一個元素,如果存在,則調用next()方法將元素取出,否則說明已到達了集合末尾,停止遍歷元素。 Iterator迭代器對象在遍歷集合時,內部采用指針的方式來跟蹤集合中的元素,為了讓初學者能更好地理解迭代器的工作原理,接下來通過一個圖例來演示Iterator對象迭代元素的過程:

在調用Iterator的next方法之前,迭代器的索引位于第一個元素之前,不指向任何元素,當?shù)谝淮握{用迭代器的next方法后,迭代器的索引會向后移動一位,指向第一個元素并將該元素返回,當再次調用next方法時,迭代器的索引會指向第二個元素并將該元素返回,依此類推,直到hasNext方法返回false,表示到達了集合的末尾,終止對元素的遍歷。

增強for

增強for循環(huán)(也稱for each循環(huán))是JDK1.5以后出來的一個高級for循環(huán),專門用來遍歷數(shù)組和集合的。它的內部原理其實是個Iterator迭代器,所以在遍歷的過程中,不能對集合中的元素進行增刪操作。 格式:

for(元素的數(shù)據(jù)類型  變量 : Collection集合or數(shù)組){ //寫操作代碼 }

它用于遍歷Collection和數(shù)組。通常只進行遍歷元素,不要在遍歷的過程中對集合元素進行增刪操作。

練習1:遍歷數(shù)組

public class NBForDemo1 {
    public static void main(String[] args) {
        int[] arr = {3,5,6,87};
        //使用增強for遍歷數(shù)組
        for(int a : arr){//a代表數(shù)組中的每個元素
            System.out.println(a);
        }
    }
}

練習2:遍歷集合

public class NBFor {
    public static void main(String[] args) {        
        Collection<String> coll = new ArrayList<String>();
        coll.add("張三");
        coll.add("李四");
        coll.add("王五");
        //使用增強for遍歷
        for(String s :coll){//接收變量s代表 代表被遍歷到的集合元素
            System.out.println(s);
        }
    }
}

tips: 新for循環(huán)必須有被遍歷的目標。目標只能是Collection或者是數(shù)組。新式for僅僅作為遍歷操作出現(xiàn)。

到此這篇關于Java中Iterator迭代器的使用詳解的文章就介紹到這了,更多相關Java Iterator迭代器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java注解實現(xiàn)websocket服務的兩種方式

    java注解實現(xiàn)websocket服務的兩種方式

    Java WebSocket是一種基于TCP協(xié)議的雙向全雙工消息傳輸技術,它允許服務器和客戶端之間實時通信,具有低延遲和高效率的特點,下面這篇文章主要給大家介紹了關于java注解實現(xiàn)websocket服務的兩種方式,需要的朋友可以參考下
    2024-08-08
  • 深入解析java中的靜態(tài)代理與動態(tài)代理

    深入解析java中的靜態(tài)代理與動態(tài)代理

    本篇文章是對java中的靜態(tài)代理與動態(tài)代理進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Java異常處理原理與用法實例分析

    Java異常處理原理與用法實例分析

    這篇文章主要介紹了Java異常處理原理與用法,結合實例形式分析了Java異常處理相關概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • SpringBoot利用觀察者模式實現(xiàn)聯(lián)動更新機制

    SpringBoot利用觀察者模式實現(xiàn)聯(lián)動更新機制

    觀察者模式(Observer Pattern)是一種軟件設計模式,在許多應用系統(tǒng)中,我們經(jīng)常需要處理多個表之間的關聯(lián)更新問題,本文將通過一個具體的案例,介紹如何在Spring Boot項目中利用觀察者模式來優(yōu)雅地解決這一需求,需要的朋友可以參考下
    2024-07-07
  • spring中的ObjectPostProcessor詳解

    spring中的ObjectPostProcessor詳解

    這篇文章主要介紹了spring中的ObjectPostProcessor詳解,Spring Security 的 Java 配置不會公開其配置的每個對象的每個屬性,這簡化了大多數(shù)用戶的配置,畢竟,如果每個屬性都公開,用戶可以使用標準 bean 配置,需要的朋友可以參考下
    2024-01-01
  • 基于Java語言實現(xiàn)Socket通信的實例

    基于Java語言實現(xiàn)Socket通信的實例

    今天小編就為大家分享一篇關于基于Java語言實現(xiàn)Socket通信的實例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java中Servlet的生命周期詳解

    Java中Servlet的生命周期詳解

    這篇文章主要介紹了Java中Servlet的生命周期詳解,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 使用EasyPOI實現(xiàn)多sheet動態(tài)列導出

    使用EasyPOI實現(xiàn)多sheet動態(tài)列導出

    這篇文章主要為大家詳細介紹了如何使用EasyPOI根據(jù)指定時間范圍創(chuàng)建動態(tài)列,以及如何將數(shù)據(jù)組織成符合要求的格式并導出,感興趣的可以了解下
    2025-03-03
  • IDEA中Maven依賴包下載不了的問題解決方案匯總

    IDEA中Maven依賴包下載不了的問題解決方案匯總

    這篇文章主要介紹了IDEA中Maven依賴包下載不了的問題解決方案匯總,文中通過圖文示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • java 分轉元與元轉分實現(xiàn)操作

    java 分轉元與元轉分實現(xiàn)操作

    這篇文章主要介紹了java 分轉元與元轉分實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

普陀区| 三江| 外汇| 三台县| 南召县| 张家界市| 凉山| 成安县| 大安市| 夏津县| 昭通市| 乐都县| 乌鲁木齐市| 凭祥市| 隆昌县| 新田县| 平果县| 蕉岭县| 高州市| 合山市| 建昌县| 威信县| 闽侯县| 铜梁县| 公主岭市| 章丘市| 交城县| 克拉玛依市| 商南县| 呼伦贝尔市| 乌苏市| 兴宁市| 凭祥市| 庆阳市| 锦州市| 镇沅| 平潭县| 盐边县| 冀州市| 老河口市| 化隆|