迭代器的实现原理
集合有不同的类,有不同的数据结构,存储方式和遍历也不同。故此定义迭代接口
真正实现的类在真正具体的子类中,以内部类实现的
public interface Iterator<E> {
boolean hasNext();
E next();
void remove(); }
Iterable接口
public interface Iterable<T> {
Iterator<T> iterator();
}
//Collection接口
public interface Collection<E> extends Iterable<E> {
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];
}
}