詳解java迭代器模式
更新時間:2019年05月16日 10:27:03 作者:__大白菜__
這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
場景
- 提供一種可以遍歷聚合對象的方式。又稱為:游標cursor模式
- 聚合對象:存儲數(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)置迭代器測試類
*/
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();
}
/**
* 自定義內(nèi)部類,可以直接使用外部類的屬性
*/
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原理
相關文章
springboot @RequiredArgsConstructor的概念與使用方式
這篇文章主要介紹了springboot @RequiredArgsConstructor的概念與使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09
Java實現(xiàn)的Excel列號數(shù)字與字母互相轉換功能
這篇文章主要介紹了Java實現(xiàn)的Excel列號數(shù)字與字母互相轉換功能,涉及java針對Excel相關數(shù)值與字符串操作技巧,需要的朋友可以參考下2018-03-03
ReentrantReadWriteLock?讀寫鎖分析總結
這篇文章主要介紹了ReentrantReadWriteLock 讀寫鎖分析總結,ReentranReadWriteLock中有兩把鎖,一把讀鎖,一把寫鎖,關于這兩把鎖的介紹,需要的小伙伴可以參考一下2022-05-05
SpringBoot結果封裝和異常攔截的實現(xiàn)示例
SpringBoot 項目中,我們通常需要將結果數(shù)據(jù)封裝成特定的格式,以方便客戶端進行處理,本文主要介紹了SpringBoot?優(yōu)雅的結果封裝和異常攔截,感興趣的可以了解一下2023-08-08
Maven配置文件settings.xml的實現(xiàn)
Maven是一個用于構建和管理Java項目的強大工具,它依賴于設置文件來配置和管理其行為,其中最重要的之一便是settings.xml文件,本文主要介紹了Maven配置文件settings.xml的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01

