ArrayList и список, возвращаемый Arrays.asList()
Метод Arrays.asList(<T>...A)
возвращает List
представление A
.
Возвращаемый объект здесь List
, который поддерживается массивом, но не является объектом ArrayList
.
Я ищу различия между объектами Arrays.asList()
и ArrayList
object - быстрый источник, чтобы рассказать об этом без погружения в код.
ТИА.
Ответы
Ответ 1
Когда вы вызываете Arrays.asList, он не возвращает java.util.ArrayList
. Он возвращает java.util.Arrays$ArrayList
, который является неизменным. Вы не можете добавить к нему, и вы не можете удалить его.
Если вы попытаетесь добавить или удалить элементы из них, вы получите UnsupportedOperationException
Ответ 2
Я немного расширю свой комментарий.
Одна проблема, которая может возникнуть, если вы используете asList
как он не отличается от объекта ArrayList
:
List<Object> list = Array.asList(array) ;
list.remove(0); // UnsupportedOperationException :(
Здесь вы не можете удалить элемент 0, потому что asList
возвращает список фиксированного размера, поддерживаемый указанным массивом. Так что вы должны сделать что-то вроде:
List<Object> newList = new ArrayList<>(Arrays.asList(array));
чтобы сделать модифицируемый newList
.