Преимущества создания списка с помощью 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)) - путь.