詳解java迭代器模式
更新時(shí)間:2019年05月16日 10:27:03 作者:__大白菜__
這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
場景
- 提供一種可以遍歷聚合對象的方式。又稱為:游標(biāo)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()判斷是否有下一個(gè)元素
while (iter.hasNext()) {
//next()函數(shù)返回當(dāng)前元素,并將游標(biāo)指向下一位
System.out.println(iter.next());
}
}
}
手動實(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)向下移動一位
*
* @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 {
//游標(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 自定義迭代器測試類(迭代器模式)
*/
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迭代器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(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)文章
springboot @RequiredArgsConstructor的概念與使用方式
這篇文章主要介紹了springboot @RequiredArgsConstructor的概念與使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
Java實(shí)現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能
這篇文章主要介紹了Java實(shí)現(xiàn)的Excel列號數(shù)字與字母互相轉(zhuǎn)換功能,涉及java針對Excel相關(guān)數(shù)值與字符串操作技巧,需要的朋友可以參考下2018-03-03
ReentrantReadWriteLock?讀寫鎖分析總結(jié)
這篇文章主要介紹了ReentrantReadWriteLock 讀寫鎖分析總結(jié),ReentranReadWriteLock中有兩把鎖,一把讀鎖,一把寫鎖,關(guān)于這兩把鎖的介紹,需要的小伙伴可以參考一下2022-05-05
SpringBoot結(jié)果封裝和異常攔截的實(shí)現(xiàn)示例
SpringBoot 項(xiàng)目中,我們通常需要將結(jié)果數(shù)據(jù)封裝成特定的格式,以方便客戶端進(jìn)行處理,本文主要介紹了SpringBoot?優(yōu)雅的結(jié)果封裝和異常攔截,感興趣的可以了解一下2023-08-08
Maven配置文件settings.xml的實(shí)現(xiàn)
Maven是一個(gè)用于構(gòu)建和管理Java項(xiàng)目的強(qiáng)大工具,它依賴于設(shè)置文件來配置和管理其行為,其中最重要的之一便是settings.xml文件,本文主要介紹了Maven配置文件settings.xml的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

