Что такое ArrayList в Java?

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

Ответ

ArrayList — это реализация интерфейса List на основе динамически изменяемого массива. При добавлении элементов, если внутренний массив заполнен, ArrayList автоматически создает новый массив большего размера (обычно в 1.5 раза) и копирует в него данные.

Ключевые характеристики:

  • Быстрый доступ по индексу (время O(1)).
  • Медленная вставка/удаление в середину (время O(n)), так как требует сдвига последующих элементов.
  • Позволяет хранить null и дубликаты.
  • Не синхронизирован (не потокобезопасен).

Пример использования:

// Создание ArrayList
ArrayList<String> languages = new ArrayList<>();

// Добавление элементов
languages.add("Java");
languages.add("Kotlin");

// Получение элемента по индексу
String first = languages.get(0); // "Java"

// Удаление элемента (вызовет сдвиг элементов)
languages.remove(1); // Удаляет "Kotlin"

ArrayList следует выбирать, когда преобладают операции чтения и случайного доступа, а модификации списка происходят редко или преимущественно в конце.