我读过arraylist的src代码,我看到类子列表的成员是name:parentoffset和indexoffset。但我已经研究了从abstractlist继承的函数clear(),发现:
public void clear() {
removeRange(0, size());
}
protected void removeRange(int fromIndex, int toIndex) {
ListIterator<E> it = listIterator(fromIndex);
for (int i=0, n=toIndex-fromIndex; i<n; i++) {
it.next();
it.remove();
}
}
当涉及parentoffset时,我看不到任何地方,因此无法理解使用backed列表如何清除“parent”列表中的suit项?
此外,我正在检查listiterator的源代码,不明白为什么在运行列表时通过iterator删除项目时会引发异常?我试着读下面的解释link:role of 但不幸的是这对我没有帮助。
1条答案
按热度按时间ev7lccsx1#
您看到的是 Package 器方法。
想象一下我让你做蛋糕。你知道蛋糕需要一些面粉,所以。。。你让你的朋友去给你拿一些,然后你烤蛋糕。
你在问:“你是怎么做蛋糕的?”??我从没见过你买面粉。
clear()
不做这项工作。明确要求它的朋友去做:它的朋友是removeRange
.然后,removerange通过向它的朋友问几个问题来完成这项工作
listIterator()
.it.remove()
最后在该listiterator上调用remove方法listIterator(fromIndex)
制造。该代码执行实际的繁重操作*。