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() + " "); 29 mit.next(); 30 } 31 } 32 }
测试结果:
第一个元素是:1 1 8 7 7 1 0 7 4 7 4 2