Преимущества создания списка с помощью Arrays.asList()

Ссылаясь на Разницу между массивом Arrays.asList(массив) и новым ArrayList <Integer> (Arrays.asList(ia)) в java Мне было любопытно, как именно цель метода Arrays.asList().

Когда мы создаем из него новый List, скажем, например,

Integer[] I = new Integer[] { new Integer(1), new Integer(2), new Integer(3) };
List<Integer> list1 = Arrays.asList(I);
List<Integer> list2 = ((List<Integer>) Arrays.asList(I));

Мы не можем выполнять большинство обычных операций над ним, например .add(), .remove(). Таким образом, я не смог добавить к нему итератор, чтобы избежать одновременной модификации.

Oracle docs state

public static Список asList (T... a)

Возвращает список фиксированного размера, поддерживаемый указанным массивом. (Изменения в возвращенный список "write through" в массив.) Этот метод действует как мост между основанными на массиве и основанными на коллекции API-интерфейсами в сочетании с Collection.toArray(). Возвращенный список является сериализуемым и реализует RandomAccess.

Это хорошо работает с созданием нового List. List<Integer> list3 = new ArrayList<>(Arrays.asList(I));

Итак, почему это и каковы его преимущества и недостатки?

Ответ 1

Невозможность вызова add, remove и т.д. - это точная разница. Если вам не нужны эти методы, Arrays.asList дает вам прекрасный вид массива в виде списка (для API, которые берут коллекции, а не массивы). Если вам нужно изменить "фигуру" списка, то новый способ ArrayList < > (Arrayys.asList(myArray)) - путь.