Ответ
Для удаления строго последнего элемента обе структуры данных обеспечивают сложность O(1), но ArrayList в большинстве случаев будет практически быстрее.
Анализ:
ArrayList.remove(index): При удалении по последнему индексу (list.size() - 1) не требуется сдвигать элементы. Это простое уменьшение счетчика размера.LinkedList.removeLast(): Требует обхода до последнего узла (O(1) для двусвязного списка) и обновления ссылок, что создает больше операций с памятью и хуже для кэша.
Пример:
// ArrayList - эффективно
ArrayList<String> arrayList = new ArrayList<>(Arrays.asList("A", "B", "C"));
arrayList.remove(arrayList.size() - 1); // Удаляет "C"
// LinkedList - также O(1), но с большими накладными расходами
LinkedList<String> linkedList = new LinkedList<>(Arrays.asList("A", "B", "C"));
linkedList.removeLast(); // Удаляет "C"
Вывод: Для удаления последнего элемента предпочтительнее ArrayList. LinkedList становится эффективнее только при частых операциях вставки/удаления в начале списка, где его сложность O(1) против O(n) у ArrayList.