欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java集合框架迭代器Iterator實現(xiàn)原理解析

 更新時間:2020年08月04日 09:55:39   作者:陳彥斌  
這篇文章主要介紹了Java集合框架迭代器Iterator實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

使用循環(huán)遍歷集合

普通for循環(huán)

for(int i=0;i<10;i++){}

增強for循環(huán)

for(String str:list){}

什么是迭代器Iterator

Iterator是Java中的一個接口,核心作用就是用來遍歷容器的元素,當容器實現(xiàn)了Iterator接口后,可以通過調用Iterator()方法獲取一個Iterator對象

為啥是調用容器里面的Iterator方法呢?

因為容器的實現(xiàn)有多種,不同的容器遍歷規(guī)則不一樣,比如:ArrayList、LinkedList、HashSet、TreeSet等,所以設計了Iterator接口,讓容器本身去實現(xiàn)這個接口,實現(xiàn)里面的方法,從而讓開發(fā)人員不用關心容器的遍歷機制,直接使用對應的方法即可

三個核心方法

  • boolean hashNext():用于判斷Iterator內是否有下個元素,如果有則返回true,沒有則false
  • Object next():返回Iterator的下一個元素,同時指針也會向后移動一位
  • void remove():刪除指針的上一個元素(建議使用自己容器里的方法)
  public static void testSet() {
    Set<String> set = new HashSet<>();
    set.add("jack");
    set.add("tom");
    set.add("marry");
    set.add("tony");
    set.add("jack");
    Iterator<String> iterator = set.iterator();
    while (iterator.hasNext()) {
      String str = iterator.next();
      System.out.println(str);
    }
  }

  public static void testList() {
    List<String> list = new ArrayList<>();
    list.add("jack");
    list.add("tom");
    list.add("mary");
    list.add("tim");
    list.add("tony");
    list.add("eric");
    list.add("jack");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
      String str = iterator.next();
      System.out.println(str);
    }
  }

迭代器和for循環(huán)對比

  • for循環(huán)適合順序訪問,或者通過下標進行訪問
  • 迭代器適合鏈式結構
  • 最終要看使用場景,性能會有輕微差別,但是可以忽略

注意事項

迭代出的對象是引用的拷貝,如果修改迭代中的元素,那么就是修改容器對象的本身??!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Spring Boot啟動流程斷點過程解析

    Spring Boot啟動流程斷點過程解析

    這篇文章主要介紹了Spring Boot啟動流程斷點過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • IntelliJ IDEA修改內存大小,使得idea運行更流暢

    IntelliJ IDEA修改內存大小,使得idea運行更流暢

    今天小編就為大家分享一篇關于IntelliJ IDEA修改內存大小,使得idea運行更流暢的文章,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例

    Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例

    這篇文章主要介紹了Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Spring?Boot中@Import三種使用方式實例詳解

    Spring?Boot中@Import三種使用方式實例詳解

    這篇文章主要介紹了Spring?Boot中@Import三種使用方式,主要有引入普通類,引入importSelector的實現(xiàn)類及引入importBeanDefinitionRegister的實現(xiàn)類,結合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 使用java的Calendar對象獲得當前日期

    使用java的Calendar對象獲得當前日期

    本文給大家分享的是使用使用java的Calendar對象獲得當前日期的上幾個度開始、結束時間,主要思路是先獲得當前季度的開始和結束日期,在當前日期的基礎上往前推3個月即上個季度的開始和結束日期,十分的實用,小伙伴們可以參考下。
    2015-07-07
  • FreeMarker如何調用Java靜態(tài)方法及靜態(tài)變量方法

    FreeMarker如何調用Java靜態(tài)方法及靜態(tài)變量方法

    這篇文章主要介紹了FreeMarker如何調用Java靜態(tài)方法及靜態(tài)變量方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 子線程任務發(fā)生異常時主線程事務回滾示例過程

    子線程任務發(fā)生異常時主線程事務回滾示例過程

    這篇文章主要為大家介紹了子線程任務發(fā)生了異常時主線程事務如何回滾的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • Java版數(shù)據(jù)結構插入數(shù)據(jù)時遇到的結點為空的問題詳解

    Java版數(shù)據(jù)結構插入數(shù)據(jù)時遇到的結點為空的問題詳解

    這篇文章主要介紹了Java版數(shù)據(jù)結構插入數(shù)據(jù)時遇到的結點為空的問題及解決辦法,需要的朋友們可以學習下。
    2019-09-09
  • java處理按鈕點擊事件的方法

    java處理按鈕點擊事件的方法

    下面小編就為大家?guī)硪黄猨ava處理按鈕點擊事件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Elasticsearch?Recovery索引分片分配詳解

    Elasticsearch?Recovery索引分片分配詳解

    這篇文章主要為大家介紹了關于Elasticsearch的Recovery索引分片分配詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2022-04-04

最新評論