List使用addAll()方法报错

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

Exception in thread "main" java.lang.UnsupportedOperationException

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

下面是代码

java 复制代码
        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

相关推荐
谦宸、墨白12 分钟前
从零开始学C++:二叉树进阶
开发语言·数据结构·c++
闲人不梦卿2 小时前
数组和矩阵以及广义表
数据结构
苦藤新鸡2 小时前
41.有序数组(二叉搜索树)转平衡二叉树
数据结构·力扣
chinesegf3 小时前
Windows 系统中通过 Conda 「克隆」环境
windows·conda
C++ 老炮儿的技术栈4 小时前
不调用C++/C的字符串库函数,编写函数strcmp
c语言·开发语言·c++·人工智能·windows·git·visual studio
毅炼4 小时前
hot100打卡——day14
java·数据结构·算法·leetcode·ai·深度优先·哈希算法
DLGXY4 小时前
数据结构——双向循环链表的建立、添加、遍历(十三)
数据结构·链表
C雨后彩虹4 小时前
优雅子数组
java·数据结构·算法·华为·面试
漫随流水4 小时前
leetcode回溯算法(46.全排列)
数据结构·算法·leetcode·回溯算法
小新软件园5 小时前
PrintPage 打印 绿色版发票打印工具 批量打印 多维度设置更实用
windows·电脑·开源软件