关于ArrayList的文档不清楚

时间:2012-01-17 09:19:57

标签: java list collections arraylist

ArrayList文档的以下部分对我来说似乎不正确:

  

运行size,isEmpty,get,set,iterator和listIterator操作   在不断的时间。

现在set定义为:

  

set(int index,E element)
            用指定的元素替换此列表中指定位置的元素。

因此,这可以用于在ArrayList的中间添加一个元素,并使其余的元素移动。
但这被认为是线性操作而不是恒定的。

我错了吗?还是我想念一些东西?

6 个答案:

答案 0 :(得分:9)

这是一个集合操作,而不是添加。它只是替换数组的第i个条目。

答案 1 :(得分:5)

ArrayList.set将替换索引处的元素,而不是插入索引处。这就像说:

array[i] = something;

持续操作。

答案 2 :(得分:4)

  

因此,这可以用于在ArrayList的中间添加一个元素,并导致其余元素移位。

不,这种解释是不正确的。操作用不同的元素替换现有元素;它没有插入任何东西。

答案 3 :(得分:3)

  

set(int index,E element)替换指定的元素   使用指定元素在此列表中的位置。

它不会在中间添加新元素,它会覆盖(替换,设置)元素

答案 4 :(得分:3)

set替换指定位置的元素。其他值没有变化。旧元素丢失了。

答案 5 :(得分:3)

  

     

public Object set(int index,                     Object element)用指定的元素替换此列表中指定位置的元素(可选)   操作)。

该方法替换索引处的元素并且不会移动任何内容,索引处的当前元素将返回给您,并且不再位于列表中。

因此,O(1)