对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()的实现会导致内部数组的拷贝“平移”,影响效率。