web-dev-qa-db-ja.com

java.util.AbstractList.remove(Unknown Source)のjava.lang.UnsupportedOperationException

私は以下のコードを試しました

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)  

誰でもこの問題を解決するのを手伝ってくれますか?

43

簡単な回避策は、リストを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); 

応答:

真の削除フラグ

コラージュ[2、3、4]

30
Bojan Petkovic

わずかな修正:いいえ、変更不可能なコレクションではありません。要素の追加と削除はサポートされていません。指定された配列に支えられており、配列はサイズ変更できないためです。しかし、 list.set(index, element) のような操作をサポートします

26

リストをArrays.asListで初期化したため、この問題が発生していました。

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

問題を解決するために、代わりにaddAllを使用しました。

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

この方法で、リストを編集したり、新しいアイテムを追加したり、削除したりできます。

3

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");

0
rohitm