调用list.remove(0)时发生Strange UnsupportedOperationException

hel*_*hod 1 java collections list

我有这个方法,它采用字符串的变量,从中创建一个List,然后尝试删除列表的第一个元素.

public void importFrom(String... files) {
    List<String> fileList = Arrays.asList(files);

    String first = fileList.remove(0);
    // other stuff
}
Run Code Online (Sandbox Code Playgroud)

但是一旦remove被召唤,UnsupportedOperationException就会被抛出.我的猜测是返回List-Type不支持remove方法.我对么?我有什么替代品?

A.H*_*.H. 7

Arrays.asList仅在数组周围提供薄包装.此包装器允许您使用API 对阵列执行大多数操作List.来自JavaDoc的引用:

返回由指定数组支持的固定大小的列表.[...]此方法充当基于数组的API和基于集合的API之间的桥梁[...]

如果你真的想删除一些东西,那么这可能会有效:

List<String> realList = new ArrayList<String>(Arrays.asList(stringArray));
Run Code Online (Sandbox Code Playgroud)

这个创建一个真实的ArrayList(支持remove)并用另一个列表的内容填充它,恰好是你的周围的包装String[].