Давайте предположим, что у нас есть java.util.LinkedList, содержащий несколько сотен элементов. Одна возможность вставить новый элемент E после существующего элемента K будет:
list.add(list.indexOf(K) + 1, E);
Насколько я понимаю, этот метод имеет поведение O (k 2 ), где k обозначает позицию элемента K. Сначала indexOf () пробегает список, пока не найдет K, а затем add должен проделайте ту же самую работу снова, пока она не достигнет положения k + 1. Но записи, которые должны быть изменены, могут быть легко определены после первого шага. Я думаю, что было бы не так много работы для создания метода addAfter (K, E) с поведением O (k).
Есть ли способ повысить производительность в подобном сценарии, кроме перехода на java.util.ArrayList?
Заранее спасибо.