美文网首页
Arrays.asList()产生的List中add、remov

Arrays.asList()产生的List中add、remov

作者: 周末不加班 | 来源:发表于2019-11-10 23:43 被阅读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");

相关文章

网友评论

      本文标题:Arrays.asList()产生的List中add、remov

      本文链接:https://www.haomeiwen.com/subject/digybctx.html