从java中删除值<string>中的值抛出java.lang.UnsupportedOperationException </string>

时间:2012-05-17 12:58:10

标签: java list

我想从列表中删除特定元素。迭代列表时我不想这样做。我想指定必须删除的值。在javadocs中,我找到了函数List.remove(Object 0)这是我的代码:

         String str="1,2,3,4,5,6,7,8,9,10";
         String[] stra=str.split(",");
         List<String> a=Arrays.asList(stra);
         a.remove("2");
         a.remove("3");

但我得到一个例外:java.lang.UnsupportedOperationException

2 个答案:

答案 0 :(得分:23)

问题是Arrays.asList()会返回一个不支持插入/删除的列表(它只是一个视图stra)。< / p>

要修复,请更改:

List<String> a = Arrays.asList(stra);

为:

List<String> a = new ArrayList<String>(Arrays.asList(stra));

这会生成列表的副本,允许您修改它。

答案 1 :(得分:2)

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList%28T...%29

看到这个。 Arrays.asList返回一个固定列表。哪个是不可变的。根据它的定义,一旦它创建,你就无法修改该对象。这就是它抛出不支持的异常的原因。