Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: Arrays.asList, fixed-size list, backed array, Java collections, unmodifiable

Почему Arrays.asList() возвращает список фиксированного размера?

Проверяет понимание внутреннего устройства метода Arrays.asList() и его отличий от стандартных коллекций Java.

Короткий ответ

Метод Arrays.asList() возвращает список, который основан на исходном массиве. Размер этого списка фиксирован, потому что он не создает новую структуру данных, а предоставляет представление (view) над массивом. Любые попытки изменить размер (add/remove) приведут к UnsupportedOperationException.

Длинный ответ

Почему Arrays.asList() возвращает список фиксированного размера?

Метод 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)).

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Java

    Java

Ключевые слова

#Arrays.asList

#fixed-size list

#backed array

#Java collections

#unmodifiable

Подпишись на Java Developer в телеграм