List使用addAll()方法报错

当使用Arrays.asList方式创建出来的list,在使用addAll方法的时候报错如下:

Exception in thread "main" java.lang.UnsupportedOperationException

这个问题记录下,以防以后忘记。

下面是代码

        List<String> objects = new ArrayList<>();
        objects.add("cc");
        objects.add("dd");

        List<String> list = Arrays.asList("aa", "bb");
        list.addAll(objects);

从代码上来看,这个方法应该是没有问题的,可是使用addAll缺报错了,看了下源码

这么看没错啊,new了一个ArrayList<>返回了,但是点开以后发现,这特么

创建的并不是ArrayList,而是Arrays的一个内部类,这个内部类实现了AbstractList,也里数据List系列的,但是有个问题,调用addAll的方法的时候,发现Arrays的内部类并没有重写addAll方法,所以直接就调用了父类中的addAll方法,AbstractList类中也没有符合条件的方法,只能继续调用父类的方法,AbstractCollection这个类中有符合条件的方法

这样就调用了add方法

特么的这个方法返回了一个异常,这就是为啥在Arrays.asList得到的List不能使用addAll的原因,怎么解决呢

经过苦思冥想,用了很多工具很多转换,最终选择了一个终极的解决方式

是的,你没有看错,就是在外面套一个new ArrayList

相关推荐

  1. 多线程执行ListaddAll方法产生的并发问题

    2024-01-27 07:32:02       12 阅读
  2. mapreduce使用

    2024-01-27 07:32:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-27 07:32:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-27 07:32:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-27 07:32:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-27 07:32:02       18 阅读

热门阅读

  1. Ceph部署

    2024-01-27 07:32:02       25 阅读
  2. conda管理python安装包与虚拟环境的相关命令汇总

    2024-01-27 07:32:02       32 阅读
  3. nginx处理跨域问题

    2024-01-27 07:32:02       31 阅读
  4. 聊一聊Sentinel背后的原理

    2024-01-27 07:32:02       27 阅读
  5. 解决docker中overlay2爆满,磁盘清理问题

    2024-01-27 07:32:02       35 阅读
  6. 教培行业的手机软件应该有哪些功能

    2024-01-27 07:32:02       35 阅读
  7. Redis的数据类型内部实现

    2024-01-27 07:32:02       28 阅读
  8. Android MVVM+Clean架构简介

    2024-01-27 07:32:02       29 阅读