一些地方我读过,删除第一个元素arrayList.remove(0);
比删除最后一个arrayList.remove(arrayList.size()-1);
请慢一些提供详细的解释。由于事先为什么删除ArrayList中的第一个元素很慢?
0
A
回答
0
public E More ...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;
}
的值被存储在数组中,因此,如果是最后一个被除去,只在阵列中的值设置为空(elementData中[ - 尺寸] =空)。但是如果它在别的地方,它需要使用arraycopy来移动它后面的所有元素。所以在上面的代码中可以清楚地看到:index = size - 1意味着arraycopy调用(使用额外的时间)。
1
在ArrayList
元素驻留在连续的内存位置。
因此,当您删除第一个元素时,必须移动从2到n的所有元素。
E.g.如果从[1,2,3,4]中删除1,则必须将2,3和4移到左侧以保持连续的内存分配。
这使它慢一点。
另一方面,如果删除最后一个元素,则不需要移位,因为所有其余元素都在适当的位置。
相关问题
- 1. 在一个ArrayList中删除 “” 元素
- 2. 从ArrayList中删除用someString找到的第一个元素?
- 3. 删除ArrayList中第一个元素的所有发行版
- 4. 双链表为什么不能删除第一个元素
- 5. 删除arraylist中的元素
- 6. 删除arraylist中的每个第3个元素
- 7. 如何删除第一个元素并使第二个元素成为java.util.NavigableSet中的第一个元素?
- 8. 从ArrayList中删除元素
- 9. 从ArrayList中删除元素
- 10. 从arraylist中删除元素
- 11. 为什么Array.splice(-1,1)删除Javascript中的最后一个元素?
- 12. 删除ArrayList中的元素后的结果是什么?
- 13. 删除ArrayList的元素
- 14. 当删除最后一个元素,jquery删除第一个元素
- 15. IndexOutOfBoundsException当删除ArrayList元素
- 16. 从ArrayList删除元素
- 17. ArrayList元素没有删除
- 18. Vuex仅删除第一个元素
- 19. 为什么`--array.length`删除数组的最后一个元素?
- 20. 删除3元素元组的第一个元素
- 21. 删除arraylist中的元素的问题
- 22. 为什么iOS6模拟器的删除速度很慢?
- 23. 删除ArrayList中的重复元素Java
- 24. InvalidOperationException在删除arrayList中的元素后
- 25. Java中的Arraylist删除元素
- 26. 为什么要删除数据元素?
- 27. 从数组中删除第一个元素的最佳方法是什么?
- 28. 为什么不是从我的ArrayList <Integer>中删除所有元素?
- 29. 在javascript中创建第2个html元素删除第一个
- 30. 为什么在第一个标题中有一个span元素?