В чем разница между массивом и коллекцией в Java?

«В чем разница между массивом и коллекцией в Java?» — вопрос из категории Java, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java массив — это низкоуровневая структура данных фиксированного размера, хранящая элементы в непрерывном блоке памяти. Коллекции — это абстракции из фреймворка Collections, предоставляющие динамические структуры с богатым API.

Ключевые отличия:

  • Размер: Массивы имеют фиксированную длину, задаваемую при создании (int[] arr = new int[10];). Коллекции (например, ArrayList) динамически меняют размер.
  • Типы данных: Массивы могут хранить как примитивы (int, char), так и объекты. Коллекции работают только с объектами (для примитивов используются классы-обертки или специализированные коллекции).
  • Функциональность: У массивов минимум встроенных методов (в основном доступ по индексу и свойство .length). Коллекции предоставляют обширный API для добавления, удаления, поиска, сортировки и т.д.
  • Производительность: Операции с массивами обычно выполняются быстрее из-за простоты структуры и прямого доступа к памяти.

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

// Массив для хранения фиксированного набора ожидаемых кодов ответа
int[] expectedStatusCodes = {200, 201, 204};

// Коллекция (ArrayList) для динамического сбора фактических результатов тестов
List<TestResult> actualResults = new ArrayList<>();
actualResults.add(new TestResult("Login Test", "PASSED")); // Размер увеличивается автоматически
actualResults.remove(0); // Удобное управление элементами

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