ArrayList源码中实现Iterator接口中的next方法时,为什么使用定义一个Object[] elementData。

发布于 2022-09-05 05:32:11 字数 610 浏览 17 评论 0

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];
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

枯叶蝶 2022-09-12 05:32:11

如果这么写:

if (i >= ArrayList.this.elementData.length)
    throw new ConcurrentModificationException();
cursor = i + 1;
return (E) ArrayList.this.elementData[lastRet = i];

那么程序会多一次不必要的寻址。

请叫√我孤独 2022-09-12 05:32:11

依我看来这应该主要是为了使得代码更加的简洁

哎呦我呸! 2022-09-12 05:32:11

为了少敲几下,以及代码的可读性。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文