设计模式之迭代器模式
来源:互联网 发布:鱼子酱眼精华 知乎 编辑:程序博客网 时间:2024/06/06 06:40
使用场景
实现代码
/** * 自定义的迭代器接口 * @author Administrator * */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 createIterator(){ return new ConcreteIterator(); } //使用内部类定义迭代器,可以直接使用外部类的属性 private class ConcreteIterator implements MyIterator { private int cursor; //定义游标用于记录遍历时的位置 @Override public void first() { cursor = 0; } @Override public Object getCurrentObj() { return list.get(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 isLast() { return cursor==(list.size()-1)?true:false; } @Override public 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(); } }}
JDK内置迭代器LIST SET
阅读全文
0 0
- 设计模式之迭代器模式
- 设计模式之 迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之--迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之-迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 设计模式 之 迭代器模式
- 设计模式 之 迭代器模式
- 设计模式之迭代器模式
- 设计模式之迭代器模式
- 【Jin】开源轻量级游戏框架Jin的设计规划
- RecyclerView+ProgressBar实现简易图表
- Java开发Eclipse必备的三款软件
- Java类的执行顺序、final的用法
- 测试注册页面不成功的解决方法
- 设计模式之迭代器模式
- MongoDB3.0集群安装和安全认证指南
- struts2 使用 modelDirven 在前台获取值后 在后台修改后再向前台传值时 传值对象未发生改变
- 库存系统难破题?且看京东到家如何破
- CSS 编码规范
- WebSocket使用之什么是WebSocket?
- 嵌入式软件经典字符串面试、笔试题(基础)
- 二叉树
- 简单聊聊 instanceof ,typeof