学习笔记——JAVA设计模式<13>迭代器模式
来源:互联网 发布:java class反编译工具 编辑:程序博客网 时间:2024/05/29 04:45
迭代器模式iterator
- 场景
- 提供一种可以遍历聚合对象的方式。又称为游标cursor模式
- 聚合对象:存储数据
- 迭代器:遍历数据
结构
–聚合对象:存储数据
–迭代器:遍历数据
代码实现
package studyGFO;/** * 自定义迭代器接口 * @author http://blog.csdn.net/thewaiting * */public interface MyIterator { void first();//将游标指向第一个 void next();//将游标指向下一个 boolean hasNext();//判断是否存在下一个 boolean isFirst(); boolean isLatst(); Object getCurrentObj();//获取当前游标指向的对象}
package studyGFO;import java.util.ArrayList;import java.util.List;/** * 自定义聚合类 * @author http://blog.csdn.net/thewaiting * */public class ConcreteMyAggregate { private List<Object> list = new ArrayList<>(); public ConcreteMyAggregate() { super(); } public void addObject(Object obj) { this.list.add(obj); } public void removeObject(Object obj) { this.list.remove(obj); } public List<Object> getList() { return list; } public void setList(List<Object> list) { this.list = list; } public MyIterator createrIterator() { return new ConcreteIterator(); } //使用内部类自定义的迭代器,可以直接使用外部类的属性方法 private class ConcreteIterator implements MyIterator{ private int cursor;//定义游标记录遍历时位置 @Override public void first() { cursor = 0; } @Override public void next() { if (cursor < list.size()) { cursor++; } } @Override public boolean hasNext() { if (cursor < list.size()) { return true; } return false; } @Override public boolean isFirst() { return cursor==0?true:false; } @Override public boolean isLatst() { return cursor==(list.size()-1)?true:false; } @Override public Object getCurrentObj() { return list.get(cursor); } }}
package studyGFO;public class Client { public static void main(String[] args) { ConcreteMyAggregate c = new ConcreteMyAggregate(); c.addObject("1"); c.addObject("2"); c.addObject("3"); c.addObject("4"); c.addObject("5"); MyIterator iter = c.createrIterator(); while (iter.hasNext()) { System.out.println(iter.getCurrentObj()); iter.next(); } }}
开发场景
jdk的迭代器遍历(List/Set)
阅读全文
0 0
- 学习笔记——JAVA设计模式<13>迭代器模式
- 《Java与模式》学习笔记:设计模式——原则
- 学习笔记——JAVA设计模式<2>工厂模式
- 学习笔记——JAVA设计模式<4>原型模式
- 学习笔记——JAVA设计模式<5>适配器模式
- 学习笔记——JAVA设计模式<6>代理模式
- 学习笔记——JAVA设计模式<8>组合模式
- 学习笔记——JAVA设计模式<9>装饰模式
- 学习笔记——JAVA设计模式<10>外观模式
- 学习笔记——JAVA设计模式<15>命令模式
- 学习笔记——JAVA设计模式<17>访问者模式
- 学习笔记——JAVA设计模式<18>策略模式
- 学习笔记——JAVA设计模式<20>状态模式
- 学习笔记——JAVA设计模式<21>观察者模式
- 学习笔记——JAVA设计模式<22>备忘录模式
- 《Java与模式》学习笔记:设计模式——树结构(合成模式+模板模式)
- 设计模式学习笔记—外观模式
- 设计模式学习笔记—观察者模式
- 线性回归预测
- 用vue-cli脚手架创建项目
- 一些搁置的代码,总结
- 访问控制级别有哪些? 以及和abstract static final的位置关系
- 最大流问题预流推进算法(BFS优化)
- 学习笔记——JAVA设计模式<13>迭代器模式
- Nginx 常用全局变量 及Rewrite规则详解
- 【Machine Learning】【Python】一、HoG + SVM 物体分类 ---- 《SVM物体分类和定位检测》
- Hive提示警告SSL
- Kotlin-Android世界的一股清流-Package
- 一键重装系统工具哪个好?人人都会用的一键重装软件
- Android—ViewPager+布局xml(View)
- Python文件/文件夹操作大全
- 赛马问题