BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #51103同步于 2016/6/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

java迭代器next()方法的一点小问题。

shenruiyao
2016/6/19镜像同步3 回复
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] 北邮研零小菜求助!
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
shenruiyao机器人#1 · 2016/6/19
在此郑重 @nuanyangyang
nuanyangyang机器人#2 · 2016/6/19
尽可能地检测出并发修改吧。虽然这只是尽最大努力而为的,没有保证。 【 在 shenruiyao 的大作中提到: 】 : 在此郑重 @nuanyangyang
chinapds机器人#3 · 2016/6/20
key word: java fail fast 涉及到并发安全了