Java设计模式之迭代器模式
来源:互联网 发布:windows禁止更新 编辑:程序博客网 时间:2024/06/03 19:37
一、定义
提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
二、角色
1、Iterator(抽象迭代器):定义访问和遍历元素的接口。
2、ConcreteIterator (具体迭代器):具体迭代器实现迭代器接口。
3、Aggregate (抽象集合):定义创建相应迭代器对象的接口
4、ConcreteAggregate (具体集合):实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例
三、demo
1、抽象迭代器
package com.example.interator;public interface Iterator<E> { boolean hasNext(); E next();}
2、具体迭代器
package com.example.interator;import java.util.List;public class ConcreteInterator<E> implements Iterator<E> { private List<E> list; private int cursor = 0; public ConcreteInterator(List<E> list) { this.list = list; } @Override public boolean hasNext() { return cursor < list.size(); } @Override public E next() { E e = null; if (hasNext()) { e = list.get(cursor++); } return e ; }}
3、抽象集合类
package com.example.interator;public interface Aggregate<E> { void add(E e); void remove(E e); Iterator<E> iterator();}
4、具体集合类
package com.example.interator;import java.util.ArrayList;import java.util.List;public class ConcreteAggregate<E> implements Aggregate<E>{ private List<E> list = new ArrayList<E>(); @Override public void add(E e) { list.add(e); } @Override public void remove(E e) { list.remove(e); } @Override public Iterator<E> iterator() { return new ConcreteInterator<E>(list); }}
5、客户类
package com.example.interator;public class Client { public static void main(String[] args) { ConcreteAggregate<String> aggregate = new ConcreteAggregate<String>(); aggregate.add("aaa"); aggregate.add("bbb"); //遍历 Iterator<String> iterator = aggregate.iterator(); while (iterator.hasNext()) { String result = iterator.next(); System.out.println("结果: " + result); } }}
打印结果
结果: aaa结果: bbb
0 0
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- Java设计模式之迭代器模式
- JAVA-设计模式之迭代器模式
- Java设计模式笔记之迭代器模式
- Java设计模式泛型化之迭代器模式
- 深入浅出Java设计模式之迭代器模式
- ubuntu16.04下彻底卸载wineqq,安装wineqq,dpkg用法小结
- Linux基础入门
- chain rule 到 Markov chain
- 反编译APK中的图片资源
- python开发之tkinter
- Java设计模式之迭代器模式
- Watermelon codeforce
- K. Yet Another Story of Rock-paper-scissors
- 原生JS的ajax
- ]发现一个安卓万能脱壳方法
- 文章标题
- php输出中文乱码问题
- RecyclerView的详细使用
- 读《Head First Html 与 CSS》(1-3章)