55 votes

java.lang.UnsupportedOperationException à java.util.AbstractList.remove (source inconnue)

j'ai essayé le code ci-dessous

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

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

j'obtenais

 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)  

Quelqu'un peut-il m'aider à résoudre ce problème?

47voto

Bojan Petkovic Points 1109

Une solution simple consiste simplement à passer la liste dans le constructeur d'un ArrayList .

Par exemple:

 Valeurs de chaîneInArray[]={"1","2","3","4"} ;
 Liste modifiableList = new ArrayList(Arrays.asList(valuesInArray));
 System.out.println(modifiableList.remove("1") + " remove flag");
 System.out.println(" collection "+ liste modifiable);

Réponse:

drapeau de suppression vrai

collection [2, 3, 4]

28voto

Sean Patrick Floyd Points 109428

Petite correction : non, ce n'est pas une Collection non modifiable. Il ne prend tout simplement pas en charge l'ajout et la suppression d'éléments, car il est soutenu par le tableau fourni et les tableaux ne sont pas redimensionnables. Mais il prend en charge des opérations telles que list.set(index, element)

6voto

Toni Almeida Points 3406

J'avais ce problème, car j'initialisais également ma liste avec Arrays.asList :

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

Pour résoudre le problème, j'ai utilisé addAll place :

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

De cette façon, vous pouvez modifier la liste, ajouter de nouveaux éléments ou supprimer.

2voto

rohitm Points 41

La liste renvoyée par Arrays.asList Méthode de java.util.Arrays classe est un objet de liste de taille fixe qui signifie que les éléments ne peuvent pas être ajoutés ou supprimés de la liste.

Ainsi, des fonctions telles que l'ajout ou la suppression ne peuvent pas être utilisées sur ce type de listes.

La solution pour ajouter ou supprimer sans obtenir java.lang.UnsupportedOperationException est ->

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

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

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

0voto

Nicolasome Points 96

Une solution simple consiste à déclarer votre liste comme ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X