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()); } }