你的位置:首页 > ASP.net教程

[ASP.net教程]【设计模式】16.迭代器模式


 

 

 

 1 package com.shejimoshi.behavioral.Iterator; 2  3  4 /** 5  * 功能:我们的迭代器接口 6  * 时间:2016年3月4日上午9:17:36 7  * 作者:cutter_point 8 */ 9 public interface MyIterator10 {11   /**12    * 得到第一个元素13    * @return14   */15   public Object first();16   /**17    * 得到下一个元素18    * @return19   */20   public Object next();21   /**22    * 是否遍历到末尾23    * @return24   */25   public boolean isDone();26   /**27    * 得到当前元素28    * @return29   */30   public Object currentItem();31 }

 

 1 package com.shejimoshi.behavioral.Iterator; 2  3 import java.util.List; 4  5  6 /** 7  * 功能:实现对list的遍历的迭代器 8  * 时间:2016年3月4日上午9:20:07 9  * 作者:cutter_point10 */11 public class MyIistIterator implements MyIterator12 {13   private List list;14   private int current = 0;  //当前的位置15   16   public MyIistIterator(List l)17   {18     this.list = l;19   }20 21   @Override22   public Object first()23   {24     if(list == null)25       return null;26     return list.get(0);27   }28 29   @Override30   public Object next()31   {32     Object o = null;33     ++current;34     //如果还没有超出范围,那么返回下一个35     if(current < list.size())36     {37       o = list.get(current);38     }//if39     return o;40   }41 42   @Override43   public boolean isDone()44   {45     return current >= list.size() ? true : false;46   }47 48   @Override49   public Object currentItem()50   {51     return list.get(current);52   }53 54 }

 

 1 package com.shejimoshi.behavioral.Iterator; 2  3 import java.util.ArrayList; 4 import java.util.List; 5  6  7 /** 8  * 功能:提供一种方法顺序访问一个聚合对象中各个元素,而又不许暴露该对象的内部表示 9  * 适用:访问一个聚合对象的内容而无需暴露它的内部表示10  *     支持对聚合对象的多种遍历11  *     为遍历不同的聚合结构提供一个统一地接口12  * 时间:2016年3月4日上午8:49:5513  * 作者:cutter_point14 */15 public class Test16 {17   public static void main(String[] args)18   {19     List lts = new ArrayList<Integer>();20     lts.add(1);lts.add(8);lts.add(7);lts.add(7);lts.add(1);lts.add(0);lts.add(7);lts.add(4);21     lts.add(7);lts.add(4);lts.add(2);22     23     MyIterator mit = new MyIistIterator(lts);24     25     System.out.println("第一个元素是:" + mit.first());26     while(!mit.isDone())27     {28       System.out.print(mit.currentItem() + "\t");29       mit.next();30     }31   }32 }

测试结果:

第一个元素是:11	8	7	7	1	0	7	4	7	4	2