Java編程Iterator迭代器設(shè)計(jì)原理及實(shí)現(xiàn)代碼示例
我們知道迭代器(Iterator)是一種對象,它能夠用來遍歷標(biāo)準(zhǔn)模板庫容器中的部分或全部元素。那么Iterator迭代器的設(shè)計(jì)原理是什么呢?迭代器問什么定義了一個借口,而不是一個類呢?
我們假設(shè)迭代器迭代數(shù)據(jù)的功能定義為了一個類,那么,會有這樣的問題。不同的集合,由于數(shù)據(jù)結(jié)構(gòu)不一樣,所以他們的存儲方式也是不一樣的。也就是說,迭代器獲取的時候,獲取的方式是變化的,也就是不固定的。所以把這種方式定義為具體的實(shí)現(xiàn)是不合理的。
無論何種集合,他們肯定都有獲取的功能,而且不知道什么時候就沒有數(shù)據(jù)了。所有他們也會有判斷功能。于是,就把判斷和獲取功能抽取出來,定義在接口中。這樣的話,將來無論是哪種集合在遍歷的時候,它們自己只要去實(shí)現(xiàn)迭代器接口即可。
那具體怎么實(shí)現(xiàn)的呢?集合迭代器是以內(nèi)部類的方式實(shí)現(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è)計(jì)原理及實(shí)現(xiàn)代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java編程利用socket多線程訪問服務(wù)器文件代碼示例、Java多線程編程實(shí)現(xiàn)socket通信示例代碼等,有什么問題,可以留言,歡迎大家交流討論。感謝朋友們對腳本之家網(wǎng)站的支持!
相關(guān)文章
如何將char類型的數(shù)字字符轉(zhuǎn)換成int類型問題
這篇文章主要介紹了如何將char類型的數(shù)字字符轉(zhuǎn)換成int類型問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12JavaSE API實(shí)現(xiàn)生成隨機(jī)數(shù)的2種方法(Random類和Math類的Random方法)
本文主要介紹了JavaSE API實(shí)現(xiàn)生成隨機(jī)數(shù)的2種方法,主要包括Random類和Math類的random方法都可以用來生成隨機(jī)數(shù),具有一定的參考價值,感興趣的可以了解一下2023-10-10微服務(wù)分布式架構(gòu)實(shí)現(xiàn)日志鏈路跟蹤的方法
在現(xiàn)有的系統(tǒng)中,由于大量的其他用戶/其他線程的日志也一起輸出穿行其中導(dǎo)致很難篩選出指定請求的全部相關(guān)日志。那我們?nèi)绾蝸硖幚砟??帶著這個問題一起通過本文學(xué)習(xí)下吧2021-08-08SpringMVC JSON數(shù)據(jù)交互實(shí)現(xiàn)過程解析
這篇文章主要介紹了SpringMVC JSON數(shù)據(jù)交互實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10Java中增強(qiáng)for循環(huán)的實(shí)現(xiàn)原理和坑詳解
增強(qiáng)的for循環(huán)是在傳統(tǒng)的for循環(huán)中增加的強(qiáng)大的迭代功能的循環(huán),是在jdk1.5之后提出來的。下面這篇文章主要給大家介紹了關(guān)于Java中增強(qiáng)for循環(huán)的實(shí)現(xiàn)原理和坑的相關(guān)資料,需要的朋友可以參考下2018-04-04GateWay路由規(guī)則與動態(tài)路由詳細(xì)介紹
這篇文章主要介紹了GateWay路由規(guī)則與GateWay動態(tài)路由,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09