对Arrays.asList(...)
返回的List进行remove()
/removeAll()
操作时,会抛出UnsupportedOperationException
异常。
据Arrays.asList(...)
的javadoc,这个方法返回的List实现类是基于数组的。
Returns a fixed-size list backed by the specified array. (Changes to the returned list “write through” to the array.)
这个List
实现类是Arrays
类的一个私有静态类,所有方法基本上只是简单地代理到内部的一个数组成员E[]
。
数组是不支持删除操作的,所以remove()
会抛异常。
实际上对所有基于数组的List
实现类最好都不要进行删除操作。
ArrayList
虽然支持remove()
,但是remove()
的实现会导致内部数组的拷贝“平移”,影响效率。