В фрагменте на Java: 'List list = Arrays.asList("a","b"); list.add("c");' Что произойдёт при выполнении и почему; как правильно создать изменяемый список в этом случае

27 Мар в 16:11
12 +1
0
Ответы
1
При выполнении будет выброшено исключение UnsupportedOperationException на строке `list.add("c")`. Причина: `Arrays.asList(...)` возвращает фиксированного размера список (внутренний класс `java.util.Arrays$ArrayList`), который бэкирован массивом, поэтому операции изменения размера (`add`/`remove`) не поддерживаются, хотя `set` работать будет.
Факты:
- В вашем примере список имеет длину 222 (элементы на индексах 000 и 111).
- `list.set(0, "x")` — разрешено.
- `list.add("c")` / `list.remove(0)` — приведут к `UnsupportedOperationException`.
Правильные способы создать изменяемый список:
- Скопировать в `ArrayList`:
- `List list = new ArrayList(Arrays.asList("a","b"));`
- В Java 9+ можно использовать:
- `List list = new ArrayList(List.of("a","b"));`
Обе версии позволят затем делать `list.add("c")` без исключений.
27 Мар в 16:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир