迭代器模式

来源:互联网 发布:js中用parse判断大小 编辑:程序博客网 时间:2024/05/18 00:46



package iterator;/*** *  * 自定义迭代器接口 * @author zw * */public interface MyIterator {void first();void next();boolean hasNext();boolean isFirst();Object getObj();}



package iterator;import java.util.ArrayList;import java.util.List;/*** * 自定义聚合类 * @author zw * */public class CMA {private List<Object> list = new ArrayList<Object>();public void addObject(Object obj) {this.list.add(obj);}public void removeObject(int index) {this.list.remove(index);}public List<Object> getList() {return list;}public void setList(List<Object> list) {this.list = list;}//获得迭代器对象public MyIterator createIterator() {return new ConcreteIterator();}//使用内部类定义迭代器,可以直接使用外部类的属性class ConcreteIterator implements MyIterator{private int cursor;//定义游标用于记录遍历时的位置@Overridepublic void first() {// TODO Auto-generated method stubcursor = 0;}@Overridepublic void next() {// TODO Auto-generated method stubif(cursor<list.size()) {cursor++;}}@Overridepublic boolean hasNext() {// TODO Auto-generated method stubif(cursor<list.size()) {return true;}return false;}@Overridepublic boolean isFirst() {// TODO Auto-generated method stubreturn cursor==0?true:false;}@Overridepublic Object getObj() {// TODO Auto-generated method stubreturn list.get(cursor);}}}

package iterator;public class Client {public static void main(String[] args) {CMA cma = new CMA();cma.addObject("zzz");cma.addObject("ccc");cma.addObject("mmm");MyIterator iter = cma.createIterator();while(iter.hasNext()) {System.out.println(iter.getObj());iter.next();}}}




原创粉丝点击