Ответ
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 следует выбирать, когда преобладают операции чтения и случайного доступа, а модификации списка происходят редко или преимущественно в конце.