Несмотря на то, что есть много прекрасно написанных ответов на этот вопрос, я добавлю свои материалы.
Скажем, у вас есть Element[] array = { new Element(1), new Element(2), new Element(3) };
Новый ArrayList может быть создан следующими способами
ArrayList<Element> arraylist_1 = new ArrayList<>(Arrays.asList(array));
ArrayList<Element> arraylist_2 = new ArrayList<>(
Arrays.asList(new Element[] { new Element(1), new Element(2), new Element(3) }));
// Add through a collection
ArrayList<Element> arraylist_3 = new ArrayList<>();
Collections.addAll(arraylist_3, array);
И они очень хорошо поддерживают все операции ArrayList
arraylist_1.add(new Element(4)); // or remove(): Success
arraylist_2.add(new Element(4)); // or remove(): Success
arraylist_3.add(new Element(4)); // or remove(): Success
Но следующие операции возвращают только представление списка ArrayList, а не фактический ArrayList.
// Returns a List view of array and not actual ArrayList
List<Element> listView_1 = (List<Element>) Arrays.asList(array);
List<Element> listView_2 = Arrays.asList(array);
List<Element> listView_3 = Arrays.asList(new Element(1), new Element(2), new Element(3));
Поэтому они будут выдавать ошибку при попытке выполнить некоторые операции ArrayList
listView_1.add(new Element(4)); // Error
listView_2.add(new Element(4)); // Error
listView_3.add(new Element(4)); // Error
Подробнее о представлении списка в массиве ссылка .