迭代器模式
来源:互联网 发布:飞思卡尔单片机课程 编辑:程序博客网 时间:2024/06/03 19:16
场景:提供一种可以遍历聚合对象的方式,又称为cursor模式
聚合对象:存储数据
迭代器:遍历数据
MyIterator.java(自定义迭代器接口)
public interface MyIterator {void first();//将游标指向第一个元素void next();//将游标指向下一个元素boolean hasNext();//判断是否存在下一个元素boolean isFirst();boolean isLast();Object getCurrentObj(); //获取当前游标指向的对象}
ConcreteMyAggregate.java(自定义聚合类)
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 createIterator(){return new ConcreteIterator();}//使用内部类定义迭代器,可以直接使用外部类的属性private class ConcreteIterator implements MyIterator {private int cursor; //定义游标用于记录遍历时的位置@Overridepublic void first() {cursor = 0;}@Overridepublic Object getCurrentObj() {return list.get(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 void next() {if(cursor<list.size()){cursor++;}}}}
测试
public class Client {public static void main(String[] args) {ConcreteMyAggregate cma = new ConcreteMyAggregate();cma.addObject("aa");cma.addObject("bb");cma.addObject("cc");MyIterator iter = cma.createIterator();while(iter.hasNext()){System.out.println(iter.getCurrentObj());iter.next();}}}
简单的说,就是一个类里面有集合属性,在里面创建一个迭代器,调用迭代器里面的方法,其实就是调用集合的方法,然后就把类中数据遍历出来了!
阅读全文
0 0
- 行为模式-迭代器模式
- 设计模式-迭代器模式
- 设计模式 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 【设计模式】迭代器模式
- 设计模式-迭代器模式
- 设计模式- 迭代器模式
- 设计模式 - 迭代器模式
- 设计模式:迭代器模式
- 行为模式-迭代器模式
- 设计模式 - 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 设计模式---迭代器模式
- 设计模式---迭代器模式
- 【设计模式】迭代器模式
- 设计模式 迭代器模式
- Qt Installer Framework
- 考试前十题答案
- Whack-a-mole(打地鼠)
- 离线情报分析工具CaseFile
- [题解]codeforces413e Maze 2D
- 迭代器模式
- 立创商城 元件封装,ALtium 3D图
- INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113
- homebrew安装mongodb
- 关于JavaScript一个错误 Uncaught TypeError: form.submit is not a function
- Maven打可执行jar包的多种方式
- 二分练习
- hihocoder 1553 区间统计
- linux 下 安装 redis