java.lang.UnsupportedOperationException at java.util.AbstractList.remove (Неизвестный источник) - PullRequest
43 голосов
/ 13 сентября 2011

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

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)  

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

Ответы [ 4 ]

30 голосов
/ 06 августа 2015

Обходной путь - просто передать список в конструктор 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 удалить флаг

столкновение [2, 3, 4]

26 голосов
/ 13 сентября 2011

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

3 голосов
/ 09 января 2017

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

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

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

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

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

0 голосов
/ 06 июля 2019

Список, возвращаемый методом 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");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...