Sobes.tech
Назад к вопросам
Junior — Middle
65

Какой коллекцией лучше воспользоваться для удаления последнего элемента — LinkedList или ArrayList?

Ответ от нейросети

sobes.tech AI

Для удаления последнего элемента лучше использовать LinkedList.

Причина в том, что у LinkedList удаление с конца происходит за константное время O(1), так как у него есть ссылки на предыдущий и следующий элементы (двусвязный список).

В случае с ArrayList удаление последнего элемента тоже достаточно эффективно — обычно это O(1), если не учитывать возможное уменьшения размера массива. Однако, если речь идет о частом удалении элементов с конца, то ArrayList тоже подходит, так как удаление последнего элемента просто уменьшает размер списка без сдвига элементов.

Если же сравнивать удаление с конца в общем:

  • LinkedList: O(1)
  • ArrayList: O(1) (удаление последнего элемента)

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

Пример удаления последнего элемента из LinkedList:

LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");

String last = list.removeLast(); // удаляет "C"

Для ArrayList:

ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");

String last = list.remove(list.size() - 1); // удаляет "C"