2012-01-17 3 views
5

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

Размер, операции IsEmpty, получить, установить, итераторы и ListIterator работать в постоянном времени.

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

набора (индекс ИНТ E элемент)
Заменяет элемент в указанной позиции в этом списке с указанным элементом.

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

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

+1

Вы думаете о 'add (int index, E element)'. – Viruzzo

ответ

9

Это заданная операция, а не добавление. Это просто заменяет i-й элемент массива.

4

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

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

5

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

array[i] = something; 

Постоянная операция.

3

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

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

3

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

3

установить

набор объектов общественного (INT индекс, элемент объекта) заменяет элемент в указанной позиции в этом списке с указанным элементом (необязательно операции).

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

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

Смежные вопросы