返回信息流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];
}
以上是ArrayList迭代器的next()方法,有一点问题:
为什么这个方法里要新建一个elementData指向外部类的elementsData。
那么问题来了,为什么不适用以下的方法:
public T next() {
return elementsData[current++];//current为迭代器的指针
}
以上方法在我的电脑上可以正常运行(只测试了少数的用例),内部类可以使用外部类的成员变量。
为什么不使用下面这种方法,这种方法有什么缺点吗?
[ema0]
北邮研零小菜求助!
这是一条镜像帖。来源:北邮人论坛 / java / #51103同步于 2016/6/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java迭代器next()方法的一点小问题。
shenruiyao
2016/6/19镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
尽可能地检测出并发修改吧。虽然这只是尽最大努力而为的,没有保证。
【 在 shenruiyao 的大作中提到: 】
: 在此郑重 @nuanyangyang