13.迭代器模式(设计模式笔记)
来源:互联网 发布:2017最新网络综艺节目 编辑:程序博客网 时间:2024/06/14 20:50
场景:
-提供一种可以遍历聚合对象的方式。又称为:游标cursor模式
-聚合对象,存储数据
开发中常见的场景:
-提供一种可以遍历聚合对象的方式。又称为:游标cursor模式
-聚合对象,存储数据
-迭代器:遍历数据
开发中常见的场景:
-jdk内置的迭代器(List/Set)
public interface MyIterator {void first();//将游标指向第一个元素void next();//将游标指向下一个元素boolean hasNext();//判断是否存在下一个元素boolean isFirst();boolean isLast();Object getCurrentObj();//获取当前游标对应的对象}
/** * 自定义的聚合类 * * @author Administrator * */public class ConcreteMyAggregate {private List<Object> list = new ArrayList<Object>();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 createIteraotr() {return new ConcreteIterator();}// 使用内部类定义迭代器,可以直接使用外部类的属性private class ConcreteIterator implements MyIterator {private int cursor; // 定义游标用于记录遍历的位置@Overridepublic void first() {cursor = 0;}@Overridepublic void next() {if(cursor < list.size()) {cursor++;}}@Overridepublic boolean hasNext() {if (cursor < list.size()) {return true;}return false;}@Overridepublic boolean isFirst() {return cursor == 0 ? true : false;}@Overridepublic boolean isLast() {return cursor == (list.size() - 1) ? true : false;}@Overridepublic Object getCurrentObj() {return list.get(cursor);}}}
public class Client {public static void main(String[] args) {ConcreteMyAggregate cma = new ConcreteMyAggregate();cma.addObject("aa");cma.addObject("bb");cma.addObject("cc");cma.addObject("dd");cma.addObject("ee");MyIterator iter = cma.createIteraotr();while(iter.hasNext()) {System.out.println(iter.getCurrentObj());iter.next();}}}
0 0
- 13.迭代器模式(设计模式笔记)
- 设计模式笔记-迭代器模式
- 设计模式笔记--迭代器模式
- 设计模式笔记:迭代器模式
- 设计模式学习笔记之迭代器模式
- Java设计模式笔记之迭代器模式
- 设计模式学习笔记-迭代器模式 一般
- 设计模式学习笔记之迭代器模式
- 设计模式 笔记 迭代器模式 Iterator
- 设计模式学习笔记--迭代器模式
- 设计模式笔记-Iterator迭代器模式
- 设计模式学习笔记--迭代器模式
- 设计模式笔记十七:迭代器模式
- 设计模式学习笔记之迭代器模式
- [学习笔记]设计模式[8]-{迭代器模式}
- 设计模式之禅笔记-迭代器模式
- 设计模式学习笔记--迭代器模式
- 【学习笔记】设计模式-迭代器模式
- ios开发中常用的数学函数
- 网上看到的关于程序猿人生的一些话
- 今天好开心
- 可视化编程
- jenkins - create node using API(python-jenkins)
- 13.迭代器模式(设计模式笔记)
- 利用CODING.NET免费部署搭建ZBLOG PHP网站
- oracle闪回(flashback)
- numpy.nonzero函数
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- C++标准库map类型
- 九月一号java小练习
- 杭电ACM2054java做法
- Activity中获取view的高度和宽度方法