调用List.remove(index)时,出现java.lang.UnsupportedOperationException异常。

3

可能是重复问题:
为什么我尝试从列表中删除时会收到UnsupportedOperationException?

当我调用List.remove(index) 或 list.remove(element) 时,它会引发java.lang.UnsupportedOperationException。唯一相关的错误代码是这个:

17:08:10 [SEVERE]       at java.util.AbstractList.remove(Unknown Source)

这里是一个例子:

String line = "cmd /say This is a test";
String[] segments = line.split(" ");
String cmd = segments[0];
List rest = Arrays.asList(segments);
rest.remove(0); // This line raises the exception

有人知道为什么会发生这种情况吗?在我的实际代码中,我检查了索引0处是否存在要删除的元素。

1个回答

14

来自Arrays.asList()的JavaDoc:

返回由指定数组支持的固定大小列表。(对返回的列表所做的更改“写入”到数组中。)

因此,可以使用固定大小的列表代替:

List rest = Arrays.asList(segments);

创建一个新的可变大小列表:

List<String> rest = new ArrayList<String>(Arrays.asList(segments));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接