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

查看:260
本文介绍了java - ArrayList源码中实现Iterator接口中的next方法时,为什么使用定义一个Object[] elementData。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

解决方案

如果这么写:

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

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

这篇关于java - ArrayList源码中实现Iterator接口中的next方法时,为什么使用定义一个Object[] elementData。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆