Первое: LinkedList
, реализованный в Sun JDK, фактически имеет ссылку на последний элемент, а также на первый элемент (есть только запись head
, но head.previous
указывает на последний элемент).Это означает, что даже в худшем случае для перемещения по списку к элементу, указанному индексом, потребуется n / 2 операций.Это также двусвязный список.
Кроме того: вставка в начало или конец LinkedList
- это тривиально O (1), потому что вам не нужно проходить все элементы.
Вставка / удаление в любом другом месте зависит от того, как именно вы это делаете!Если вы используете Iterator
(для добавления ListIterator
), то операция также может быть O (1), так как Iterator
уже будет иметь ссылкук соответствующей записи.
Если, однако, вы используете add(int, E)
или remove(int)
, то LinkedList
придется найти соответствующая запись (O (n)) и затем удалить элемент (O (1)), поэтому вся операция будет O (n).