Dee*_*kar 45 java arrays collections exception
我试过下面的代码
String s[]={"1","2","3","4"};
Collection c=Arrays.asList(s);
System.out.println(c.remove("1") +" remove flag");
System.out.println(" collcetion "+c);
Run Code Online (Sandbox Code Playgroud)
我得到了
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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
Boj*_*vic 31
简单的解决方法就是将List传递给一个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);
响应:
真正删除标志
collcetion [2,3,4]
Sea*_*oyd 26
轻微纠正:不,它不是一个不可修改的集合.它只是不支持添加和删除元素,因为它由提供的数组支持,并且数组不可调整大小.但它支持像这样的操作list.set(index, element)
小智 8
Arrays.asList类方法返回的Listjava.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");
Run Code Online (Sandbox Code Playgroud)
我遇到了这个问题,因为我也在用以下方法初始化列表Arrays.asList:
List<String> names = Arrays.asList("a", "b", "c");
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我addAll改用:
List<String> names = new ArrayList<String>();
names.addAll(Arrays.asList("a", "b", "c"));
Run Code Online (Sandbox Code Playgroud)
这样,您可以编辑列表,添加新项目或删除。