自己实现迭代器

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

}

原文地址:https://www.cnblogs.com/cs-lcy/p/7396199.html