![](/img/trans.png)
[英]In an ArrayList if an element is removed at index 0 using remove(), then what will be the time complexity?
[英]What is the time complexity of adding an element at the beginning of an ArrayList?
假设我在这个数组中有一个带有n个元素的ArrayList,我在开头添加了一个元素:
myArrayList.add(0,'some value');
这次行动的时间复杂程度是多少?
Java Doc没有指定这一点。
也
我刚开始学习Java,我看到了句子
An ArrayList in Java is a List that is backed by an array.
这里'支持'是什么意思? 谢谢!
将元素添加到数组的开头是O(n) - 它需要将所有现有元素移位一个位置。
数组列表中的所有元素都存储在一个连续的数组中。 如果添加的元素多于数组的当前大小 - 它将自动生成以适应新元素。
最后,O(1)在多次插入时摊销。
ArrayList.add(0, element)
占用线性时间,但常量非常低,因为它可以使用超快速的System.arraycopy
。
ArrayList文档在这一点上确实模糊不清 - 我刚刚在SE11中对它进行了研究,并且自收集框架的第一个版本(在Java 1.2中)以来它没有改变。
我相信ArrayList文档的作者的意图是指定,在Java的任何实现上,附加操作(即add(E e)
方法)必须以恒定的摊销时间运行,并且列表插入操作(即add(int index, E e)
方法)必须在O(n)
时间内运行,其中n
是列表的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.