List.add UnsupportedOperationException在尝试添加其他列表时抛出.
List<String> supportedTypes = Arrays.asList("6500", "7600"};
Run Code Online (Sandbox Code Playgroud)
我在做循环
supportedTypes.addAll(Arrays.asList(supportTypes.split(","))); //line 2
Run Code Online (Sandbox Code Playgroud)
从文件中读取supportTypes.
但第2行抛出了UnsupportedOperationException,但我无法确定原因?
我在列表中添加另一个列表,然后为什么不支持此操作?
Era*_*ran 88
Arrays.asList 返回由数组支持的固定大小的列表,并且您无法向其添加元素.
您可以创建一个可修改的列表来完成addAll工作:
List<String> supportedTypes = new ArrayList<String>(Arrays.asList("6500", "7600", "8700"));
Arrays.asList返回固定大小的列表.
如果您希望能够向列表中添加元素,请执行以下操作:
List<String> supportedTypes = new ArrayList<>(Arrays.asList("6500", "7600"});
supportedTypes.addAll(Arrays.asList(supportTypes.split(",")));
Run Code Online (Sandbox Code Playgroud)
列表初始化时也会发生此错误Collections.emptyList(),这是不可变的:
List<String> myList = Collections.emptyList();
Run Code Online (Sandbox Code Playgroud)
相反,使用可变列表初始化它.例如
List<String> myList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
问题是该Arrays.asList方法返回java.util.Arrays.ArrayList的实例,该实例不支持对元素的添加/删除操作.这种addAll方法抛出异常并不令人惊讶,因为add方法java.util.Arrays.ArrayList定义为:
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
Run Code Online (Sandbox Code Playgroud)
相关问题:
从文档:
Arrays.asList返回由指定数组支持的固定大小的列表.
| 归档时间: |
|
| 查看次数: |
22053 次 |
| 最近记录: |