先貼代碼,有空來寫內容。 1.定義集合 import java.util.List; import java.util.ArrayList; 2.寫迭代器 3.測試迭代器 ...
先貼代碼,有空來寫內容。
1.定義集合
import java.util.List;
import java.util.ArrayList;
1 //coollection是我自己定義的一個集合,因為要寫迭代器,得有個迭代的對象啊。 2 class coollection<Object>{ 3 //coollection的數據存儲在一個ArrayList里 4 private List<Object> data = new ArrayList<Object>(); 5 //index用於記錄當前將迭代元素的下標 6 private int index = 0; 7 //給集合添加元素 8 public void add(Object o){ 9 data.add(o); 10 } 11 //獲取index 12 public int getCurrent(){ 13 return index; 14 } 15 //獲取集合規模 16 public int size(){ 17 return data.size(); 18 } 19 //獲取一個元素並將索引指向下一個元素 20 public Object get(){ 21 return data.get(index++); 22 } 23 //刪除已經被迭代的最後一個元素 24 public void remove(){ 25 if(index != 0) 26 data.remove(index-1); 27 } 28 //獲取coollection的迭代器 29 public iterator getiterator(){ 30 index = 0; 31 return new coollectionItrator(this); 32 } 33 }
2.寫迭代器
1 //迭代器介面,所有迭代器都要實現這個介面的所有功能 2 interface iterator{ 3 public boolean hasNext(); 4 public Object next(); 5 public void remove(); 6 } 7 //coollection集合的專屬迭代器,實現了iterator 8 class coollectionItrator implements iterator{ 9 //定義該迭代器要操作的集合 dataSrc 10 coollection<Object> dataSrc; 11 //初始化集合 12 public coollectionItrator(coollection c){ 13 dataSrc = c; 14 } 15 //重寫hasNext() 16 @Override 17 public boolean hasNext(){ 18 return dataSrc.size() > dataSrc.getCurrent(); 19 } 20 //重寫next() 21 @Override 22 public Object next(){ 23 return dataSrc.get(); 24 } 25 //重寫remove() 26 @Override 27 public void remove(){ 28 dataSrc.remove(); 29 } 30 }
3.測試迭代器
1 // 測試迭代器 2 public class iteratorDemo{ 3 public static void main(String[] args){ 4 //new 一個集合,將三個實例放進集合里 5 coollection<Student> stu = new coollection<Student>(); 6 stu.add(new Student("singleDog","man","18")); 7 stu.add(new Student("singleDoge","feman","19")); 8 stu.add(new Student("0.0","feman","20")); 9 10 //獲取集合stu的迭代器 11 iterator it = stu.getiterator(); 12 //遍歷集合併輸出元素 13 while(it.hasNext()){ 14 System.out.println(it.next()); 15 } 16 // 測試迭代器的remove功能 17 it.remove(); 18 System.out.println("刪除後:"); 19 it = stu.getiterator(); 20 while(it.hasNext()){ 21 System.out.println(it.next()); 22 } 23 } 24 }