【发布时间】:2016-11-09 10:45:31
【问题描述】:
这是 ArrayList::Itr 的下一个方法
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];
}
它包含一个 if 语句:
if (i >= elementData.length)
throw new ConcurrentModificationException();
我认为这种情况很少发生i >= elementData.length,除非用户调用 trimToSize 方法。而且我认为 if 语句是多余的,因为 checkForComodification 可以处理所有事情。
我说的对吗?
【问题讨论】:
-
我认为您的意思不是“丰富”……因为它没有意义。你的意思是“冗余”吗?
-
是的,非常感谢。
-
“我说的对吗?” 不,因为你不能保证,在
checkForComodification调用之后,if (i >= elementData.length)之前不会操纵内容.你会发现很多情况,当你用谷歌搜索 "java ConcurrentModificationException iterator".
标签: java arraylist iterator next