Ответ
Доступ по индексу (get(int index)) и вставка/удаление в конце (add(E element), remove(int index) при index == size-1) работают за O(1) в ArrayList, тогда как в LinkedList — O(n) для доступа и O(1) для вставки/удаления в начале/конце. ArrayList использует массив, что обеспечивает быстрый произвольный доступ, но вставка/удаление в середине — O(n) из-за сдвига элементов.
Пример:
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1); // O(1)
int val = arrayList.get(0); // O(1)
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1); // O(1)
int val = linkedList.get(0); // O(n) — обход списка