Ссылаясь на Разницу между массивом 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));
Итак, почему это и каковы его преимущества и недостатки?