Коротко
Обе реализуют List, но устроены по-разному:
| ArrayList | LinkedList | |
|---|---|---|
| Структура | динамический массив | двусвязный список |
| get(i) | O(1) | O(n) |
| add в конец | амортизированно O(1) | O(1) |
| insert в середину | O(n) сдвиг | O(n) поиск + O(1) вставка |
Практика
В реальных задачах ArrayList почти всегда default: лучше locality, быстрее доступ по индексу. LinkedList редко выигрывает на практике.
Короткий ответ
«ArrayList — массив, быстрый индекс. LinkedList — узлы, удобнее точечные вставки после нахождения узла, но на практике чаще ArrayList.»