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.