ArrayList源码-Remove方法流程
ArrayList的remove方法用于删除ArrayList中指定位置的元素。下面是ArrayList的remove方法的源码和流程:
public E remove(int index) {
rangeCheck(index); // 检查索引是否越界
modCount++; // 修改ArrayList结构的操作数加1
E oldValue = elementData(index); // 获取要删除的元素
int numMoved = size - index - 1;
if (numMoved > 0) {
System.arraycopy(elementData, index + 1, elementData, index, numMoved); // 将后面的元素往前移动一位
}
elementData[--size] = null; // 将最后一个元素设为null,方便垃圾回收
return oldValue; // 返回删除的元素
}
流程如下:
-
首先,通过
rangeCheck(index)
方法检查索引是否越界,如果越界则抛出IndexOutOfBoundsException
异常。 -
接下来,
modCount++
将ArrayList
的修改操作数加1,用于实现fail-fast机制。 -
然后,通过
elementData(index)
方法获取要删除的元素,并将其保存到oldValue
变量中。 -
接下来,计算出要移动的元素个数,即
numMoved = size - index - 1
,如果numMoved > 0
,则需要将后面的元素往前移动一位。 -
使用
System.arraycopy
方法将后面的元素往前移动一位。 -
将最后一个元素设为null,方便垃圾回收。
-
最后,返回删除的元素。
版权声明
本文仅代表作者观点,不代表米安网络立场。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。