实现Iterator

 

昨天同事有问到有一些Iterator是怎么知道hasNext是怎么知道还有多余元素的。呵呵,听起来有点好笑。其实也正常。我刚开始学c的结构体的时候,有一个字段是 last,我也在疑问,为什么last就是表示最后一个元素,难道last是一个关键字。

今天看了一下jdk源码,给同事写了一份简单的例子。把代码附上,以便以后查看,怕忘了,呵呵。

 

public class Test {
    
    public static void main(String[] args) {
        MyList<String> list = new MyList<String>();
        list.setData("a");
        list.setData("b");
        list.setData("c");

        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

class MyList<E> implements Iterable<E>{
    
    private int size;
    private E data;
    private List<E> dataStore;
    
    public MyList(){
        size = 0;
        dataStore = new ArrayList<E>();
    }

    
    public int getSize() {
        return size;
    }


    public void setSize(int size) {
        this.size = size;
    }


    public E getData() {
        return data;
    }


    public void setData(E data) {
        this.data = data;
        this.size++;
        dataStore.add(data);
    }


    @Override
    public Iterator<E> iterator() {
        return new Itr();
    }


    private class Itr implements Iterator<E>{

        @Override
        public boolean hasNext() {
            return size>0?true:false;
        }

        @Override
        public E next() {
            return dataStore.get(--size);
        }

        @Override
        public void remove() {
            dataStore.remove(size);
            size--;
        }
    }
}

 

posted @ 2013-04-17 10:27  BaronZ  阅读(308)  评论(0编辑  收藏  举报