Я использовал Arrays.asList() но поведение (и сигнатура) каким-то образом изменилось с Java SE 1.4.2 (документы сейчас в архиве) на 8, и большинство фрагментов, которые я нашел в Интернете, используют поведение 1.4.2.
В вашем примере это связано с тем, что у вас не может быть списка примитивного типа. Другими словами, List<int> это невозможно.
Вы можете, однако, иметь List<Integer> используя Integer класс, который оборачивает int примитив. Преобразуйте свой массив в List с помощью Arrays.asList служебного метода.
Мы не можем иметь, List<int> поскольку int это примитивный тип, поэтому мы можем иметь только List<Integer>.
Java 16
Java 16 представляет новый метод в Stream API под названием toList(). Этот удобный метод возвращает неизменяемый список, содержащий элементы stream. Итак, попытка добавить новый элемент в список просто приведет к UnsupportedOperationException.
Когда мы используем Arrays.asList размер возвращаемого списка фиксирован, потому что возвращаемый список - это не java.util.ArrayList, а частный статический класс, определенный внутри java.util.Arrays. Итак, если мы добавим или удалим элементы из возвращаемого списка, будет выдан UnsupportedOperationException. Итак, мы должны использовать list22, когда мы хотим изменить список. Если у нас есть Java8, то мы также можем использовать list23.
Для ясности list21 может быть изменен в том смысле, что мы можем вызывать list21.set(index,element) но этот список не может быть изменен структурно, т. Е. Нельзя добавлять или удалять элементы из списка. Вы также можете проверить этот мой ответ для получения дополнительных объяснений.
Если нам нужен неизменяемый список, мы можем обернуть его следующим образом:
Еще один момент, который следует отметить, заключается в том, что метод Collections.unmodifiableList возвращает неизменяемое представление указанного списка. Неизменяемая коллекция представлений - это неизменяемая коллекция, которая также является представлением резервной коллекции. Обратите внимание, что изменения в резервной коллекции все еще могут быть возможны, и если они произойдут, они будут видны в неизменяемом представлении.
Мы можем получить действительно неизменяемый список в Java 9 и 10.
Первый подход фактически не преобразует массив, а "представляет" его как List. Но массив находится под капотом со всеми его свойствами, такими как фиксированное количество элементов. Пожалуйста, обратите внимание, что вам необходимо указать тип при построении ArrayList.