自定义迭代器接口:
package iterator_mode; /** * 自定义迭代器接口 */ public interface MyIterator { /** * 将游标指向第一个元素 */ public void first(); /** * 将游标指向下一个元素 */ public void next(); /** * 判断是否存在下一个元素 */ public boolean hasNext(); /** * 判断当前游标是否是第一个 */ public boolean isFirst(); /** * 判断当前游标是否是最后一个 */ public boolean isLast(); /** * 获取当前游标指向的对象 */ public Object getCurrentObject(); }
自定义聚合类:
package iterator_mode; import java.util.ArrayList; import java.util.List; /** * 自定义聚合类(封装对集合的操作) */ 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;//默认为0. //从后往前遍历: private int cursor = list.size() - 1; /** * 将游标指向第一个元素 */ @Override public void first() { cursor = 0; } /** * 将游标指向下一个元素 */ @Override public void next() { if (cursor < list.size()) { cursor++;//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 Object getCurrentObject() { return list.get(cursor); } } }
测试类:
package iterator_mode; 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.getCurrentObject()); iter.next(); } } }
打印结果:
aa
bb
cc
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7106597.html

浙公网安备 33010602011771号