Java編程Iterator迭代器設(shè)計(jì)原理及實(shí)現(xiàn)代碼示例
我們知道迭代器(Iterator)是一種對(duì)象,它能夠用來(lái)遍歷標(biāo)準(zhǔn)模板庫(kù)容器中的部分或全部元素。那么Iterator迭代器的設(shè)計(jì)原理是什么呢?迭代器問(wèn)什么定義了一個(gè)借口,而不是一個(gè)類呢?
我們假設(shè)迭代器迭代數(shù)據(jù)的功能定義為了一個(gè)類,那么,會(huì)有這樣的問(wèn)題。不同的集合,由于數(shù)據(jù)結(jié)構(gòu)不一樣,所以他們的存儲(chǔ)方式也是不一樣的。也就是說(shuō),迭代器獲取的時(shí)候,獲取的方式是變化的,也就是不固定的。所以把這種方式定義為具體的實(shí)現(xiàn)是不合理的。
無(wú)論何種集合,他們肯定都有獲取的功能,而且不知道什么時(shí)候就沒(méi)有數(shù)據(jù)了。所有他們也會(huì)有判斷功能。于是,就把判斷和獲取功能抽取出來(lái),定義在接口中。這樣的話,將來(lái)無(wú)論是哪種集合在遍歷的時(shí)候,它們自己只要去實(shí)現(xiàn)迭代器接口即可。
那具體怎么實(shí)現(xiàn)的呢?集合迭代器是以內(nèi)部類的方式實(shí)現(xiàn)的。簡(jiǎ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)建對(duì)象 Collection c = new ArrayList(); //添加元素 c.add("hello"); c.add("world"); c.add("helloworld"); //遍歷集合對(duì)象,通過(guò)集合對(duì)象調(diào)用方法c.iterator()得到迭代器對(duì)象Iterator Iterator it = c.iterator(); //返回的是Iterator的子類對(duì)象,多態(tài)。 while (it.hasNext()) { //檢查序列中是否還有元素 //System.out.println(it.next()); String s =(String)it.next();//獲得序列中的下一個(gè)元素 System.out.println(s); } } }
輸出
hello world helloworld
總結(jié)
以上就是本文關(guān)于Java編程Iterator迭代器設(shè)計(jì)原理及實(shí)現(xiàn)代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java編程利用socket多線程訪問(wèn)服務(wù)器文件代碼示例、Java多線程編程實(shí)現(xiàn)socket通信示例代碼等,有什么問(wèn)題,可以留言,歡迎大家交流討論。感謝朋友們對(duì)我們網(wǎng)站的支持!
上一篇:java編程中自動(dòng)拆箱與自動(dòng)裝箱詳解
欄 目:Java編程
下一篇:Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼
本文標(biāo)題:Java編程Iterator迭代器設(shè)計(jì)原理及實(shí)現(xiàn)代碼示例
本文地址:http://mengdiqiu.com.cn/a1/Javabiancheng/8434.html
您可能感興趣的文章
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10Java Socket編程(三) 服務(wù)器Sockets
- 01-10Java進(jìn)階:Struts多模塊的技巧
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)
- 01-10Java經(jīng)驗(yàn)點(diǎn)滴:處理沒(méi)有被捕獲的異常
- 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)器
- 01-10Java中的浮點(diǎn)數(shù)分析
- 01-10面向?qū)ο缶幊?Java中的抽象數(shù)據(jù)類型


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)
- 01-10Java Socket編程(三) 服務(wù)器Sockets
- 01-10Java進(jìn)階:Struts多模塊的技巧
- 01-10J2SE 1.5版本的新特性一覽
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)
- 01-10Java經(jīng)驗(yàn)點(diǎn)滴:處理沒(méi)有被捕獲的異常
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?