詳解java迭代器模式
更新時間:2019年05月16日 10:27:03 作者:__大白菜__
這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
場景
- 提供一種可以遍歷聚合對象的方式。又稱為:游標cursor模式
- 聚合對象:存儲數(shù)據(jù)
- 迭代器:遍歷數(shù)據(jù)
JDK內置的迭代器(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內置迭代器測試類 */ 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()判斷是否有下一個元素 while (iter.hasNext()) { //next()函數(shù)返回當前元素,并將游標指向下一位 System.out.println(iter.next()); } } }
手動實現(xiàn)迭代器
package com.qianyu.gof.iterator; /** * @author lijing * @date 2019-04-10-14:37 * @discroption 迭代器接口 */ public interface MyIterator { /** * 判斷是否有下一個元素 * * @return */ boolean hasNext(); /** * 返回當前元素,并且將游標向下移動一位 * * @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); } /** * 返回迭代器對象 * * @return */ public ConcreteIterator iterator() { return new ConcreteIterator(); } /** * 自定義內部類,可以直接使用外部類的屬性 */ private class ConcreteIterator implements MyIterator { //游標 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 自定義迭代器測試類(迭代器模式) */ 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迭代器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:
- Java集合框架迭代器Iterator實現(xiàn)原理解析
- 一文讀懂Java Iterator(迭代器)
- Java如何使用Iterator迭代器刪除集合重復選項
- 如何實現(xiàn)java Iterator迭代器功能
- Java使用Iterator迭代器遍歷集合數(shù)據(jù)的方法小結
- 23種設計模式(14)java迭代器模式
- Java foreach相關原理及用法解析
- Java中ArrayList在foreach里remove的問題詳析
- java 使用foreach遍歷集合元素的實例
- 深入了解java8的foreach循環(huán)
- 深入理解java中for和foreach循環(huán)
- Java中遍歷數(shù)組使用foreach循環(huán)還是for循環(huán)?
- Java中的迭代器和foreach原理
相關文章
spring cloud config 配置中心快速實現(xiàn)過程解析
這篇文章主要介紹了spring cloud config 配置中心快速實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08SpringBoot如何讀取war包jar包和Resource資源
這篇文章主要介紹了SpringBoot如何讀取war包jar包和Resource資源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01SpringBoot整合mybatis/mybatis-plus實現(xiàn)數(shù)據(jù)持久化的操作
這篇文章主要介紹了SpringBoot整合mybatis/mybatis-plus實現(xiàn)數(shù)據(jù)持久化,本節(jié)內容我們介紹了數(shù)據(jù)持久化的相關操作,并且是基礎傳統(tǒng)的關系型數(shù)據(jù)庫——mysql,需要的朋友可以參考下2022-10-10Java中List常用操作比for循環(huán)更優(yōu)雅的寫法示例
List是Java中比較常用的集合類,關于List接口有很多實現(xiàn)類,下面這篇文章主要給大家介紹了關于Java中List常用操作比for循環(huán)更優(yōu)雅的寫法,需要的朋友可以參考下2021-11-11