迭代子模式
2016-03-23 17:02
316 查看
迭代器模式就是顺序访问聚集中的对象,这个思路和我们常用的一模一样,MyCollection中定义了集合的一些操作,MyIterator中定义了一系列迭代操作。聚合对象,类似于手写集合。
——贴上自己喜欢的代码!
/** * * @author: muyichun * @date : 2016年3月23日16:47:03 * @function: 迭代子模式 */ public class Main{ public static void main(String[] args) { Collection collection = new MyCollection(); Iterator it = collection.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } } //集合的两个接口 interface Collection{ public Iterator iterator(); //取得集合元素 public Object get(int i); //取得集合大小 public int size(); } interface Iterator{ //前移 public Object previous(); //后移 public Object next(); public boolean hasNext(); //取得第一个元素 public Object first(); } //两个实现: class MyCollection implements Collection{ public String string[] = {"A","B","C","D","E"}; @Override public Iterator iterator() { return new MyIterator(this); } @Override public Object get(int i) { return string[i]; } @Override public int size() { return string.length; } } class MyIterator implements Iterator{ private Collection collection; private int pos = -1; public MyIterator(Collection collection){ this.collection = collection; } @Override public Object previous() { if (pos > 0) pos--; return collection.get(pos); } @Override public Object next() { if (pos < collection.size() - 1) pos++; return collection.get(pos); } @Override public boolean hasNext() { if (pos < collection.size() - 1) return true; return false; } @Override public Object first() { pos = 0; return collection.get(pos); } }
——贴上自己喜欢的代码!
相关文章推荐
- 关于APK签名
- Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)
- 【jQuery源码】jQuery对象初始化
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
- hdu 2795 Billboard
- Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库
- Flowplayer-一款免费的WEB视频播放器
- weak、 _weak、 _block的格式
- 详解Objective-C设计模式编程中对备忘录模式的运用
- Moore-Penrose广义逆矩阵
- 多线程 等待/通知机制
- 轻松解决oracle11g 空表不能 exp 导出 的问题。
- as3 时间
- Java Executors(线程池)
- PHP并发IO编程之路
- Android View Touch的事件分发机制
- Android--httpclient模拟post请求和get请求
- 基于ZooKeeper的分布式Session实现
- string.format
- android提供的json解析类