ArrayList文档的以下部分对我来说似乎不正确:
运行size,isEmpty,get,set,iterator和listIterator操作 在不断的时间。
现在set定义为:
set(int index,E element)
用指定的元素替换此列表中指定位置的元素。
因此,这可以用于在ArrayList的中间添加一个元素,并使其余的元素移动。
但这被认为是线性操作而不是恒定的。
我错了吗?还是我想念一些东西?
答案 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)