私は以下のコードを試しました
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)
誰でもこの問題を解決するのを手伝ってくれますか?
簡単な回避策は、リストを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]
わずかな修正:いいえ、変更不可能なコレクションではありません。要素の追加と削除はサポートされていません。指定された配列に支えられており、配列はサイズ変更できないためです。しかし、 list.set(index, element)
のような操作をサポートします
リストをArrays.asList
で初期化したため、この問題が発生していました。
List<String> names = Arrays.asList("a", "b", "c");
問題を解決するために、代わりにaddAll
を使用しました。
List<String> names = new ArrayList<String>();
names.addAll(Arrays.asList("a", "b", "c"));
この方法で、リストを編集したり、新しいアイテムを追加したり、削除したりできます。
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");