美文网首页
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