Самый избитый вопрос. Проверяет знание особенностей реализации (
кишки ArrayList,
кишки LinkedList) и эффективности операций в этих разных реализациях. В вопрос иногда добавляют
Vector –
пересинхронизированный и
устаревший вариант
ArrayList, который лучше заменить
Collections.synchronizedList().
ArrayList хранит данные в массиве,
LinkedList в
двусвязном списке. Из этого вытекает разница в эффективности разных операций:
ArrayList лучше справляется с изменениями в середине и ростом в пределах
capacity,
LinkedList – на краях. В целом обычно
ArrayList лучше.
Стоит добавить, что для работы на краях лучше использовать реализации специально для этого спроектированного интерфейса
Deque: например реализующую
кольцевой буфер ArrayDeque.