【设计模式】16.迭代器模式

【设计模式】16.迭代器模式_第1张图片

 

 

 

 1 package com.shejimoshi.behavioral.Iterator;
 2 
 3 
 4 /**
 5  * 功能:我们的迭代器接口
 6  * 时间:2016年3月4日上午9:17:36
 7  * 作者:cutter_point
 8  */
 9 public interface MyIterator
10 {
11     /**
12      * 得到第一个元素
13      * @return
14      */
15     public Object first();
16     /**
17      * 得到下一个元素
18      * @return
19      */
20     public Object next();
21     /**
22      * 是否遍历到末尾
23      * @return
24      */
25     public boolean isDone();
26     /**
27      * 得到当前元素
28      * @return
29      */
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_point
10  */
11 public class MyIistIterator implements MyIterator
12 {
13     private List list;
14     private int current = 0;    //当前的位置
15     
16     public MyIistIterator(List l)
17     {
18         this.list = l;
19     }
20 
21     @Override
22     public Object first()
23     {
24         if(list == null)
25             return null;
26         return list.get(0);
27     }
28 
29     @Override
30     public Object next()
31     {
32         Object o = null;
33         ++current;
34         //如果还没有超出范围,那么返回下一个
35         if(current < list.size())
36         {
37             o = list.get(current);
38         }//if
39         return o;
40     }
41 
42     @Override
43     public boolean isDone()
44     {
45         return current >= list.size() ? true : false;
46     }
47 
48     @Override
49     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:55
13  * 作者:cutter_point
14  */
15 public class Test
16 {
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 }

测试结果:

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

  

 

你可能感兴趣的:(【设计模式】16.迭代器模式)