Непонятно по документации ArrayList - PullRequest
5 голосов
/ 17 января 2012

Следующая часть документации для ArrayList не кажется мне правильной:

Операции size, isEmpty, get, set, iterator и listIterator выполняются в константевремя.

Теперь набор определяется как:

set (int index, E element)
Заменяет элемент в указанной позиции в этом списке на указанныйelement.

Таким образом, это можно использовать для добавления элемента в середину ArrayList и смещения остальных элементов.
Но это считается линейной операцией, а не постоянной.

Я здесь не прав?Или я что-то упускаю из виду?

Ответы [ 6 ]

9 голосов
/ 17 января 2012

Это заданная операция, а не дополнение. Он просто заменяет i-ую запись массива.

5 голосов
/ 17 января 2012

ArrayList.set заменит элемент в индексе, а не вставит в индекс. Это как сказать:

array[i] = something;

Постоянная работа.

4 голосов
/ 17 января 2012

Таким образом, это можно использовать для добавления элемента в середину ArrayList и смещения остальных элементов.

Нет, это неверное толкование. Операция заменяет существующий элемент другим; ничего не вставляется.

3 голосов
/ 17 января 2012

набор

открытый набор объектов (int index, Элемент объекта) Заменяет элемент в указанной позиции в этом списке на указанный элемент (необязательно) операция).

Метод заменяет элемент в index и ничего не сдвигает, текущий элемент в index будет возвращен вам и больше не будет в списке.

Таким образом, O (1)

3 голосов
/ 17 января 2012

set заменяет элемент в указанной позиции.Там нет сдвига других значений.Старый элемент потерян.

3 голосов
/ 17 января 2012

set (int index, E element) Заменяет элемент в указанной позиции в этом списке на указанный элемент.

Он не добавляет новый элемент в середине, он перезаписывает(заменяет, устанавливает на) элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...