我正在阅读 AbstractList 的代码,其中有一个嵌套类 Itr,这很好。让我困惑的是为什么Java为其Iterator提供了一组方法,以便可以使用它来修改底层集合,例如add(),,,remove()。set()
必须将集合暴露给迭代器的根本原因是什么?它比通过 Collection 的方法修改集合更方便吗?
private class Itr implements Iterator<E> {
//......bha
public void remove() {
if (lastRet < 0)
throw new IllegalStateException();
checkForComodification();
try {
AbstractList.this.remove(lastRet);
if (lastRet < cursor)
cursor--;
lastRet = -1;
expectedModCount = modCount;
} catch (IndexOutOfBoundsException e) {
throw new ConcurrentModificationException();
}
}
}
private class ListItr extends Itr implements ListIterator<E> {
ListItr(int index) {
cursor = index;
}
public void set(E e) ///...
public void add(E e) //.....
开心每一天1111
相关分类