Ответ
List<E> — это фундаментальный интерфейс в Java Collections Framework, представляющий собой упорядоченную коллекцию (последовательность). Он позволяет хранить дубликаты элементов и предоставляет контроль над позицией каждого элемента (доступ по целочисленному индексу).
Ключевые характеристики:
- Сохраняет порядок вставки.
- Допускает дублирующиеся элементы.
- Допускает
nullзначения. - Предоставляет методы для работы с индексами:
get(int index),set(int index, E element),add(int index, E element),remove(int index).
Основные реализации и их выбор:
| Реализация | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
ArrayList |
Чаще всего. Когда нужен быстрый доступ по индекту и больше операций чтения, чем вставки/удаления в середине. | O(1) доступ по индексу. |
O(n) вставка/удаление в середине (требует сдвига элементов). |
LinkedList |
Когда много операций вставки/удаления в начале/середине списка, или нужна реализация Deque. |
O(1) вставка/удаление в начале/середине (если известна позиция). |
O(n) доступ по индексу (требует обхода с начала/конца). |
Vector |
В legacy-коде. Не рекомендуется для нового кода. | Синхронизирован (потокобезопасен). | Медленнее ArrayList из-за синхронизации. Используйте Collections.synchronizedList() или CopyOnWriteArrayList. |
Пример:
List<String> list = new ArrayList<>();
list.add("First"); // Индекс 0
list.add("Second"); // Индекс 1
list.add("First"); // Дубликат разрешен
String element = list.get(1); // "Second"
list.set(0, "New First"); // Замена элемента по индексу