Java 关于ArrayList的文档不清楚

Java 关于ArrayList的文档不清楚,java,list,collections,arraylist,Java,List,Collections,Arraylist,对于我来说,文档的以下部分似乎不正确: 运行size、isEmpty、get、set、iterator和listIterator操作 在固定时间内 现在set定义为: 集合(整数索引,E元素) 用指定的元素替换此列表中指定位置的元素 这可以用来在数组列表中间添加一个元素,并使元素的其余部分移位。 但这被认为是线性操作,而不是常数 我错了吗?还是我误解了什么 这是一个集合操作,不是添加操作。它只替换数组的第i个条目 这可以用来在数组中添加一个元素,并使元素的其余部分移位。 不,这个解释不正确。操作

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

运行size、isEmpty、get、set、iterator和listIterator操作 在固定时间内

现在set定义为:

集合(整数索引,E元素)
用指定的元素替换此列表中指定位置的元素

<>这可以用来在数组列表中间添加一个元素,并使元素的其余部分移位。 但这被认为是线性操作,而不是常数


我错了吗?还是我误解了什么

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

<>这可以用来在数组中添加一个元素,并使元素的其余部分移位。


不,这个解释不正确。操作将现有元素替换为不同的元素;它不插入任何内容。

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

array[i] = something;
持续运行

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


它不在中间添加新元素,它重写(替换,设置)元素

<代码> SET在指定位置替换元素。其他价值观不会发生变化。旧元素丢失了

设置

公共对象集(int索引, 对象元素)将此列表中指定位置的元素替换为指定元素(可选) 操作)

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

因此,O(1)

您正在考虑添加(int-index,E元素)。