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");
上一篇下一篇

猜你喜欢

热点阅读