1 package com.shejimoshi.behavioral.Iterator; 2 3 4 /** 5 * 功能:我們的迭代器介面 6 * 時間:2016年3月4日上午9:17:36 7 * 作者:cutter_point 8 */ 9 public interface MyIterat
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