ArrayList源码中实现Iterator接口中的next方法时,为什么定义Object[] elementData = ArrayList.this.elementData,然后从定义的elementData数组上取值。 return (E) elementData[lastRet = i]。而不是直接使用 ArrayList.this.elementData[lastRet = i]?
源码:
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];
}
3 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
如果这么写:
if (i >= ArrayList.this.elementData.length)
throw new ConcurrentModificationException();
cursor = i + 1;
return (E) ArrayList.this.elementData[lastRet = i];
那么程序会多一次不必要的寻址。
添加回答
举报
0/150
提交
取消