我有这个方法,它接受字符串的可变参数,从中创建一个列表,然后尝试删除列表的第一个元素。
public void importFrom(String... files) {
List<String> fileList = Arrays.asList(files);
String first = fileList.remove(0);
// other stuff
}
但是一旦调用remove
,就会抛出一个UnsupportedOperationException
。我的猜测是return List-Type不支持remove方法。我对么?我有什么选择?
最佳答案
Arrays.asList
只提供一个数组的薄包装。此包装器允许您使用 List
API 对数组执行大多数 操作。引用自 JavaDoc:
Returns a fixed-size list backed by the specified array. [...] This method acts as bridge between array-based and collection-based APIs [...]
如果你真的想删除一些东西,那么这可能有效:
List<String> realList = new ArrayList<String>(Arrays.asList(stringArray));
这个创建了一个真正的 ArrayList
(它支持 remove
)并用另一个列表的内容填充它,这个列表恰好是你的 String[ 的包装器]
。
关于java - 调用 list.remove(0) 时出现奇怪的 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7952462/