java - 调用 list.remove(0) 时出现奇怪的 UnsupportedOperationException

标签 java list collections

我有这个方法,它接受字符串的可变参数,从中创建一个列表,然后尝试删除列表的第一个元素。

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/

相关文章:

java - charvariable=(char)(charvariable+3) 这个语法是什么意思?

java - 如何注释数组 NonNull?

java - 使用 Junit 4.4 或更高版本运行 Eclipse Junit 插件测试——为什么没有检测到测试?

java - 声纳空指针违规

java - 树集和哈希集

java - 最终静态与静态最终变量

list - haskell 列表中的唯一元素

python - 如何将列表的值附加到 3D 数组 - python 和 opencv

python - 在随机列表生成中强制执行 "no 2 same contiguous elements"

list - scala 中排序出现问题,出现 "Diverging implicit expansion ....."错误。根据元组列表的第一个元素按相反顺序对元组列表进行排序