这是源代码:
删除此列表中指定位置的元素.将任何后续元素向左移位(从索引中减去一个).参数:index要删除的元素的索引返回:从列表中删除的元素抛出: java.lang.IndexOutOfBoundsException
public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work
return oldValue;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
由于rangeCheck(索引)已经保证索引<size,是否有必要检查if (numMoved > 0)?
numMoved可以为0(如果通过调用删除最后一个元素list.remove(list.size()-1)),在这种情况下arraycopy不需要.因此这if (numMoved > 0)是必要的.
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |