Ответ
Да, зависит от позиции вставки.
LinkedList — это двусвязный список, поэтому время доступа к элементу по индексу линейное.
add(E element)/addLast(E element)– вставка в конец: O(1). Список хранит ссылку на tail.addFirst(E element)– вставка в начало: O(1). Список хранит ссылку на head.add(int index, E element)– вставка по индексу (в середину): O(n). Требуется пройти от head или tail до нужной позиции.
Сравнение на примере:
LinkedList<String> list = new LinkedList<>();
list.add("End"); // O(1) - в конец
list.addFirst("Start"); // O(1) - в начало
list.add(1, "Middle"); // O(n) - обход до 1-го индекса (n=2 в этот момент)
Выбор коллекции:
- Используйте
LinkedListдля частых вставок/удалений в начале или конце списка. - Используйте
ArrayListдля частого доступа по индексу (get/set) или добавления в конец (амортизированно O(1)).