迭代器的實現原理java
集合有不一樣的類,有不一樣的數據結構,存儲方式和遍歷也不一樣。故此定義迭代接口數據結構
真正實現的類在真正具體的子類中,之內部類實現的dom
public interface Iterator<E> {this
boolean hasNext(); E next();
void remove(); }code
Iterable接口接口
public interface Iterable<T> {element
Iterator<T> iterator();
}rem
//Collection接口it
public interface Collection<E> extends Iterable<E> {io
Iterator<E> iterator(); } // List接口
public interface List<E> extends Collection<E> {
Iterator<E> iterator(); }
//ArrayList接口
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{ public Iterator<E> iterator() {
return new Itr();
}
private class Itr implements Iterator<E> {
int cursor; // index of next element to return int lastRet = -1; // index of last element returned; -1 if no such int expectedModCount = modCount; public boolean hasNext() { return cursor != size; } public E next() { checkForComodification(); int i = cursor; if (i >= size) throw new NoSuchElementException(); Object[] elementData = ArrayList.this.elementData; if (i >= elementData.length) throw new ConcurrentModificationException(); cursor = i + 1; return (E) elementData[lastRet = i]; }
}