昨天同事有问到有一些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--; } } }