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

Java編程Iterator迭代器設(shè)計原理及實現(xiàn)代碼示例

 更新時間:2017年10月24日 11:51:42   作者:不知不覺已變淡  
這篇文章主要介紹了Java編程Iterator迭代器設(shè)計原理及實現(xiàn)代碼示例,具有一定參考價值,需要的朋友可以了解下。

我們知道迭代器(Iterator)是一種對象,它能夠用來遍歷標(biāo)準(zhǔn)模板庫容器中的部分或全部元素。那么Iterator迭代器的設(shè)計原理是什么呢?迭代器問什么定義了一個借口,而不是一個類呢?

我們假設(shè)迭代器迭代數(shù)據(jù)的功能定義為了一個類,那么,會有這樣的問題。不同的集合,由于數(shù)據(jù)結(jié)構(gòu)不一樣,所以他們的存儲方式也是不一樣的。也就是說,迭代器獲取的時候,獲取的方式是變化的,也就是不固定的。所以把這種方式定義為具體的實現(xiàn)是不合理的。

無論何種集合,他們肯定都有獲取的功能,而且不知道什么時候就沒有數(shù)據(jù)了。所有他們也會有判斷功能。于是,就把判斷和獲取功能抽取出來,定義在接口中。這樣的話,將來無論是哪種集合在遍歷的時候,它們自己只要去實現(xiàn)迭代器接口即可。

那具體怎么實現(xiàn)的呢?集合迭代器是以內(nèi)部類的方式實現(xiàn)的。簡單看一段代碼。

package me.socketthread;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo { 
  public static void main(String[] args) { 
    //創(chuàng)建對象 
    Collection c = new ArrayList(); 
     
    //添加元素 
    c.add("hello"); 
    c.add("world"); 
    c.add("helloworld"); 
     
     
    //遍歷集合對象,通過集合對象調(diào)用方法c.iterator()得到迭代器對象Iterator 
    Iterator it = c.iterator(); //返回的是Iterator的子類對象,多態(tài)。 
     
    while (it.hasNext()) {    //檢查序列中是否還有元素 
      //System.out.println(it.next()); 
      String s =(String)it.next();//獲得序列中的下一個元素 
      System.out.println(s); 
    } 
     
  } 
} 

輸出

hello
world
helloworld

總結(jié)

以上就是本文關(guān)于Java編程Iterator迭代器設(shè)計原理及實現(xiàn)代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java編程利用socket多線程訪問服務(wù)器文件代碼示例、Java多線程編程實現(xiàn)socket通信示例代碼等,有什么問題,可以留言,歡迎大家交流討論。感謝朋友們對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • springboot讀取resource配置文件生成容器對象的示例代碼

    springboot讀取resource配置文件生成容器對象的示例代碼

    這篇文章主要介紹了springboot讀取resource配置文件生成容器對象的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot如何配置文件properties和yml

    SpringBoot如何配置文件properties和yml

    這篇文章主要介紹了SpringBoot如何配置文件properties和yml問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • springboot整合rabbitmq實現(xiàn)訂單超時取消案例分析

    springboot整合rabbitmq實現(xiàn)訂單超時取消案例分析

    本文介紹了如何使用SpringBoot和RabbitMQ實現(xiàn)訂單超時取消功能,通過配置TTL隊列和死信交換機,可以管理訂單的超時邏輯,實際應(yīng)用中,可以通過數(shù)據(jù)庫標(biāo)記訂單狀態(tài)或手動確認(rèn)機制來防止訂單被錯誤取消
    2025-01-01
  • 深入學(xué)習(xí)Java單元測試(Junit+Mock+代碼覆蓋率)

    深入學(xué)習(xí)Java單元測試(Junit+Mock+代碼覆蓋率)

    在做單元測試時,代碼覆蓋率常常被拿來作為衡量測試好壞的指標(biāo),甚至,用代碼覆蓋率來考核測試任務(wù)完成情況,比如,代碼覆蓋率必須達(dá)到80%或 90%。下面我們就來詳細(xì)學(xué)習(xí)下java單元測試吧
    2019-06-06
  • java實現(xiàn)靜默加載Class示例代碼

    java實現(xiàn)靜默加載Class示例代碼

    這篇文章主要給大家介紹了關(guān)于java實現(xiàn)靜默加載Class的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 一文帶你徹底搞懂Lambda表達(dá)式

    一文帶你徹底搞懂Lambda表達(dá)式

    這篇文章主要介紹了一文帶你徹底搞懂Lambda表達(dá)式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Mybatis之通用Mapper動態(tài)表名及其原理分析

    Mybatis之通用Mapper動態(tài)表名及其原理分析

    這篇文章主要介紹了Mybatis之通用Mapper動態(tài)表名及其原理分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Spring與Redis集成的正確方式流程詳解

    Spring與Redis集成的正確方式流程詳解

    這篇文章主要為大家介紹了Spring與Redis集成的正確方式流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java異常處理機制深入理解

    Java異常處理機制深入理解

    如果某個方法不能按照正常的途徑完成任務(wù),就可以通過另一種路徑退出方法。在這種情況下會拋出一個封裝了錯誤信息的對象。此時,這個方法會立刻退出同時不返回任何值。另外,調(diào)用這個方法的其他代碼也無法繼續(xù)執(zhí)行,異常處理機制會將代碼執(zhí)行交給異常處理器
    2022-01-01
  • SpringBoot-RestTemplate如何實現(xiàn)調(diào)用第三方API

    SpringBoot-RestTemplate如何實現(xiàn)調(diào)用第三方API

    這篇文章主要介紹了SpringBoot-RestTemplate實現(xiàn)調(diào)用第三方API的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

墨江| 纳雍县| 泸西县| 定襄县| 仁怀市| 开封市| 延长县| 南华县| 河东区| 水城县| 四会市| 康马县| 光山县| 正蓝旗| 屯门区| 高台县| 石家庄市| 台南县| 开原市| 枞阳县| 喀喇| 阿鲁科尔沁旗| 白河县| 徐汇区| 台北县| 师宗县| 岳西县| 旌德县| 光山县| 元朗区| 汶上县| 银川市| 磐石市| 湄潭县| 桓台县| 贺州市| 拜城县| 新民市| 迭部县| 乌什县| 高清|