Arrays.asList()产生的List中add、remove时报异常UnsupportedOperationException

异常:

将数组通过Arrays.asList()转换成集合,在执行增、删时报异常
java.lang.UnsupportedOperationException

String[] str = {"1",  "2", "3"};
List list = ArrayList(Arrays.asList(str);
list.remove("1");
Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.remove(AbstractList.java:161)
        at java.util.AbstractList$Itr.remove(AbstractList.java:374)

原因:

通过Arrays.asList()返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList,Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重写这些方法而Arrays的内部类ArrayList没有重写,所以会抛出异常。

解决方法

重新包装Arrays.asList()

...
List list = new ArrayList( Arrays.asList(str) );
list.remove("1");

你可能感兴趣的:(Arrays.asList()产生的List中add、remove时报异常UnsupportedOperationException)