Подтвердить что ты не робот

Java.lang.UnsupportedOperationException в java.util.AbstractList.remove(Неизвестный источник)

Я пробовал ниже код

String s[]={"1","2","3","4"};  
Collection c=Arrays.asList(s);  
System.out.println(c.remove("1") +"  remove flag");  

System.out.println(" collcetion "+c);  

Я получал

Exception in thread "main" java.lang.UnsupportedOperationException  
at java.util.AbstractList.remove(Unknown Source)  
at java.util.AbstractList$Itr.remove(Unknown Source)  
at java.util.AbstractCollection.remove(Unknown Source)  
at test.main(test.java:26)  

Может ли кто-нибудь помочь мне решить эту проблему?

4b9b3361

Ответ 1

Легкая работа - это просто передать список в конструктор ArrayList.

Например:

String valuesInArray[]={"1","2","3","4"};  
List modifiableList = new ArrayList(Arrays.asList(valuesInArray));
System.out.println(modifiableList.remove("1") + "  remove flag");  
System.out.println(" collcetion "+ modifiableList); 

Ответ:

true удалить флаг

collcetion [2, 3, 4]

Ответ 2

Небольшая коррекция: нет, это не неизменяемая коллекция. Он просто не поддерживает добавление и удаление элементов, поскольку он поддерживается предоставленным массивом, а массивы не изменяются по размеру. Но он поддерживает операции типа list.set(index, element)

Ответ 3

У меня была эта проблема, потому что я также инициализировал свой список с помощью Arrays.asList:

List<String> names = Arrays.asList("a", "b", "c");

Чтобы решить проблему, вместо этого я использовал addAll:

List<String> names = new ArrayList<String>();
names.addAll(Arrays.asList("a", "b", "c"));

Таким образом вы можете редактировать список, добавлять новые элементы или удалять.

Ответ 4

Список возвращаемого Arrays.asList метод java.util.Arrays класса представляет собой список фиксированного размера объект, который означает, что элементы не могут быть добавлены или удалены из списка.

Таким образом, такие функции, как добавление или удаление, не могут работать с такими списками.

Решение для добавления или удаления без получения java.lang.UnsupportedOperationException ->

List<String> strList= new ArrayList<>(Arrays.asList(strs));

//Then Add or Remove can be called on such List

newList.add("100");
newList.remove("100");

Ответ 5

Одно исправление - объявить ваш список следующим образом:

List<Integer> list2 = new ArrayList<>(Arrays.asList(0,8,1,5,7,0));