我试过下面的代码
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)
有人可以帮我解决这个问题吗?
答案 0 :(得分:30)
简单的解决方法就是将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);
响应:
true remove flag
collcetion [2,3,4]
答案 1 :(得分:26)
轻微纠正:不,这不是一个不可修改的集合。它只是不支持添加和删除元素,因为它由提供的数组支持,并且数组不可调整大小。但它支持list.set(index, element)
答案 2 :(得分:3)
我遇到了这个问题,因为我还在使用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 :(得分:0)
由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");
答案 4 :(得分:0)
一个内衬修补程序是这样声明您的列表:
List<Integer> list2 = new ArrayList<>(Arrays.asList(0,8,1,5,7,0));