不受支持的操作尝试从 Array.asList 返回的列表中删除时的异常
我正在使用a来保存通过调用方法获得的一些数据。然后,我尝试使用方法删除元素。但是,当我尝试这样做时,我得到了一个.这是什么原因呢?我应该如何解决此问题?List
Array.asList()
myList.Remove(int i)
UnsupportedOperationException
我正在使用a来保存通过调用方法获得的一些数据。然后,我尝试使用方法删除元素。但是,当我尝试这样做时,我得到了一个.这是什么原因呢?我应该如何解决此问题?List
Array.asList()
myList.Remove(int i)
UnsupportedOperationException
Array.asList()
在列表接口中包装数组。该列表仍由数组支持。数组的大小是固定的 - 它们不支持添加或删除元素,因此包装器也不能。
文档没有像他们可能的那样清楚地说明这一点,但他们确实说:
返回由指定数组支持的固定大小的列表。
“固定大小”位应提示您无法添加或删除元素:)
虽然还有其他方法可以解决这个问题(从数组创建新库的其他方法),但没有额外的库,但我个人建议在发布时获得Google Collections Library(或Guava)。然后,您可以使用:ArrayList
List<Integer> list = Lists.newArrayList(array);
我建议这样做的原因是,GCL通常是一件好事,非常值得使用。
如注释中所述,这需要数组的副本;该列表不受原始数组的支持,并且任一集合中的更改在另一个集合中都看不到。
它不是. 返回它自己的实现(将更改“写”到数组中)。java.util.ArrayList
Arrays.asList()
List
这是一个固定大小的列表,因此不支持删除。
你可以从中创建一个真正的:ArrayList
new java.util.ArrayList<>(Arrays.asList(someArray));
我必须承认,这非常令人困惑。asList()