Back to questions
Junior — Middle
64
Какие существуют способы реализации интерфейса List в Java и в чем их отличия?
Answer from AI
sobes.tech AI
В Java интерфейс List реализуют несколько основных классов, каждый из которых имеет свои особенности:
- ArrayList — реализован на основе динамического массива. Быстрый доступ по индексу (O(1)), но операции вставки и удаления в середине списка могут быть дорогими (O(n)), так как элементы сдвигаются.
- LinkedList — реализован как двусвязный список. Быстрая вставка и удаление элементов в любом месте списка (O(1) при наличии ссылки), но доступ по индексу медленнее (O(n)), так как нужно проходить по элементам.
- Vector — похож на ArrayList, но синхронизирован (потокобезопасен). В современных приложениях используется реже из-за накладных расходов на синхронизацию.
Выбор реализации зависит от требований к производительности:
- Если нужен быстрый случайный доступ и редко изменяется размер —
ArrayList. - Если часто вставляются/удаляются элементы в середине —
LinkedList. - Если нужна потокобезопасность —
Vectorили лучше использоватьCollections.synchronizedListилиCopyOnWriteArrayList.
Пример использования ArrayList:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
System.out.println(list.get(0)); // apple