Проверяет понимание внутреннего устройства метода Arrays.asList() и его отличий от стандартных коллекций Java.
Метод Arrays.asList() в Java возвращает объект класса java.util.Arrays.ArrayList — это внутренний статический класс, а не стандартный java.util.ArrayList. Этот класс хранит ссылку на исходный массив и работает напрямую с ним. Поскольку массив имеет фиксированную длину, список, построенный на его основе, также не может изменять свой размер.
Когда вы вызываете Arrays.asList(), создается обертка вокруг переданного массива. Все операции чтения (get, set) делегируются массиву. Операции изменения размера (add, remove) не поддерживаются, так как массив нельзя расширить или сузить. Если попытаться вызвать add(), будет выброшено исключение UnsupportedOperationException.
String[] arr = {"a", "b", "c"};
List<String> list = Arrays.asList(arr);
// Работает — изменяет элемент массива
list.set(0, "z");
System.out.println(arr[0]); // "z"
// Ошибка — попытка изменить размер
list.add("d"); // UnsupportedOperationException
list.remove(0); // UnsupportedOperationExceptionЭтот подход удобен, когда нужно быстро получить список для итерации или передачи в метод, который принимает Collection, но не требует изменения размера. Например, для создания неизменяемого набора данных или для тестирования.
Используйте Arrays.asList(), когда вам нужен список фиксированного размера на основе массива, и вы не планируете добавлять или удалять элементы. Если требуется изменяемый список, создайте новый экземпляр ArrayList через конструктор: new ArrayList<>(Arrays.asList(arr)).