詳解java迭代器模式
場(chǎng)景
- 提供一種可以遍歷聚合對(duì)象的方式。又稱為:游標(biāo)cursor模式
- 聚合對(duì)象:存儲(chǔ)數(shù)據(jù)
- 迭代器:遍歷數(shù)據(jù)
JDK內(nèi)置的迭代器(List/Set)
package com.qianyu.gof.iterator; import java.util.ArrayList; import java.util.Iterator; /** * @author lijing * @date 2019-04-10-14:38 * @discroption JDK內(nèi)置迭代器測(cè)試類 */ public class IteratorTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); Iterator<String> iter = list.iterator(); //hasNext()判斷是否有下一個(gè)元素 while (iter.hasNext()) { //next()函數(shù)返回當(dāng)前元素,并將游標(biāo)指向下一位 System.out.println(iter.next()); } } }
手動(dòng)實(shí)現(xiàn)迭代器
package com.qianyu.gof.iterator; /** * @author lijing * @date 2019-04-10-14:37 * @discroption 迭代器接口 */ public interface MyIterator { /** * 判斷是否有下一個(gè)元素 * * @return */ boolean hasNext(); /** * 返回當(dāng)前元素,并且將游標(biāo)向下移動(dòng)一位 * * @return */ Object next(); }
package com.qianyu.gof.iterator; import java.util.ArrayList; import java.util.List; /** * @author lijing * @date 2019-04-10-19:18 * @discroption 自定義聚合類 */ public class MyList { List<Object> list = new ArrayList<Object>(); public boolean add(Object obj) { return list.add(obj); } public boolean remove(Object obj) { return list.remove(obj); } /** * 返回迭代器對(duì)象 * * @return */ public ConcreteIterator iterator() { return new ConcreteIterator(); } /** * 自定義內(nèi)部類,可以直接使用外部類的屬性 */ private class ConcreteIterator implements MyIterator { //游標(biāo) private int cursor = 0; @Override public boolean hasNext() { return this.cursor < list.size(); } @Override public Object next() { return list.get(cursor++); } } }
package com.qianyu.gof.iterator; /** * @author lijing * @date 2019-04-10-19:14 * @discroption 自定義迭代器測(cè)試類(迭代器模式) */ public class IteratorTest2 { public static void main(String[] args) { MyList myList = new MyList(); myList.add("aa"); myList.add("bb"); myList.add("cc"); MyIterator iter = myList.iterator(); while (iter.hasNext()){ System.out.println(iter.next()); } } }
UML類圖:
以上所述是小編給大家介紹的java迭代器模式詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Java集合框架迭代器Iterator實(shí)現(xiàn)原理解析
- 一文讀懂Java Iterator(迭代器)
- Java如何使用Iterator迭代器刪除集合重復(fù)選項(xiàng)
- 如何實(shí)現(xiàn)java Iterator迭代器功能
- Java使用Iterator迭代器遍歷集合數(shù)據(jù)的方法小結(jié)
- 23種設(shè)計(jì)模式(14)java迭代器模式
- Java foreach相關(guān)原理及用法解析
- Java中ArrayList在foreach里remove的問題詳析
- java 使用foreach遍歷集合元素的實(shí)例
- 深入了解java8的foreach循環(huán)
- 深入理解java中for和foreach循環(huán)
- Java中遍歷數(shù)組使用foreach循環(huán)還是for循環(huán)?
- Java中的迭代器和foreach原理
相關(guān)文章
Java?多個(gè)時(shí)間區(qū)間進(jìn)行合并處理方法
用戶在選擇多個(gè)時(shí)間區(qū)間之后,如選擇的時(shí)間區(qū)間連續(xù)或者有重疊,需要對(duì)所選的時(shí)間區(qū)間進(jìn)行合并,這其實(shí)是一個(gè)區(qū)間合并問題,下面通過本文給大家介紹Java?多個(gè)時(shí)間區(qū)間進(jìn)行合并處理的解決方案,一起看看吧2024-02-02spring cloud config 配置中心快速實(shí)現(xiàn)過程解析
這篇文章主要介紹了spring cloud config 配置中心快速實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08SpringBoot如何讀取war包jar包和Resource資源
這篇文章主要介紹了SpringBoot如何讀取war包jar包和Resource資源,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01SpringBoot整合mybatis/mybatis-plus實(shí)現(xiàn)數(shù)據(jù)持久化的操作
這篇文章主要介紹了SpringBoot整合mybatis/mybatis-plus實(shí)現(xiàn)數(shù)據(jù)持久化,本節(jié)內(nèi)容我們介紹了數(shù)據(jù)持久化的相關(guān)操作,并且是基礎(chǔ)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫——mysql,需要的朋友可以參考下2022-10-10帶你一文深入認(rèn)識(shí)Java?String類
這篇文章主要介紹了帶你一文深入認(rèn)識(shí)Java?String類,String 類在Java中是很常用的類,很重要的類,在后續(xù)的學(xué)習(xí)中經(jīng)常會(huì)用到,是后續(xù)學(xué)習(xí)的基礎(chǔ), 文章圍繞主題展開更多詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-06-06Java中List常用操作比for循環(huán)更優(yōu)雅的寫法示例
List是Java中比較常用的集合類,關(guān)于List接口有很多實(shí)現(xiàn)類,下面這篇文章主要給大家介紹了關(guān)于Java中List常用操作比for循環(huán)更優(yōu)雅的寫法,需要的朋友可以參考下2021-11-11Springmvc自定義異常處理器實(shí)現(xiàn)流程解析
這篇文章主要介紹了Springmvc自定義異常處理器實(shí)現(xiàn)流程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07SpringMVC攔截器和異常處理器使用示例超詳細(xì)講解
攔截器(Interceptor)是一種動(dòng)態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動(dòng)態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下2022-09-09