package com.aaron.reflect;
import java.util.ArrayList;
import java.util.List;
interface MyIterator<T>{
/*提供了这个接口,不同的类自己拿去实现吧*/
T next();
boolean hasNext();
}
class MyList<T> { //自己制作的这个容器有2个方法,一个是添加方法,一个说获得迭代器方法
List<T> list = new ArrayList<T>();
public void add(T item){
list.add(item);
}
/*省略List中固有的那些方法比如size(),remove()等*/
public MyIterator<T> Iterator(){
return new MyIteratorImpl<T>();
}
/*基于链表的迭代器*/ /*自己没参照别人的情况下想到的内部类*/
@SuppressWarnings("hiding")
class MyIteratorImpl<T> implements MyIterator<T>{
private int i = -1;
public boolean hasNext(){
return (i >= list.size()-1)? false:true;
}
@SuppressWarnings("unchecked")
public T next(){
i++;
T temp = (T) list.get(i);
return temp;
}
}
}
public class Test88 {
public static void main(String[] args) {
MyList<String> test = new MyList<String>();
test.add("Tom");
test.add("Linda");
test.add("Lisa");
test.add("Dony");
test.add("Jack"); /*即使不用迭代器也可以进行遍历*/
MyIterator<String> it = test.Iterator();
while(it.hasNext())
System.out.println(it.next());
}
}
![]()