Что такое интерфейс List в Java?

«Что такое интерфейс List в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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"); // Замена элемента по индексу