我有一个关于在创建List之后使用List的问题。我在下面的代码片段中收到了java.lang.UnsupportedOperationException。有什么想法吗?
List <Integer> aList = Arrays.asList(3, 4);
if (condition)
aList.add(5);
这不起作用
aList.add(new Integer(5));
我想初始化一个包含常用值的列表,然后添加条件值。
答案 0 :(得分:2)
来自the javadoc:
返回由指定数组支持的固定大小列表。 (对返回列表的更改“直写”到数组。)
(强调我的)
如果您想要一个可以调整大小的List,请使用
new ArrayList<>(Arrays.asList(3, 4));
答案 1 :(得分:1)
Arrays.asList返回一个固定大小的数组,你无法添加它。请参阅api。
答案 2 :(得分:1)
来自docs,
返回由指定数组支持的固定大小列表。 (对返回列表的更改“直写”到数组。)此方法与Collection.toArray()结合,充当基于数组的API和基于集合的API之间的桥梁。返回的列表是可序列化的,并实现RandomAccess。
返回的列表不支持添加新元素。
答案 3 :(得分:0)
根据documentation:asList(T...)
函数返回由指定数组支持的固定大小列表。
返回的列表没有引用源的add(E element)
函数实现。
你需要这样做:
ArrayList<Integer>aList = new ArrayList<>(Arrays.asList(3, 4));