Arrays.asList()产生的List中add、remov
2019-11-10 本文已影响0人
周末不加班
异常:
将数组通过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");