Arrays.asList()方法的大坑

踩坑

今天在开发过程中使用Arrays.asList()方法将数组转化为List,之后对List进行了remove操作,结果项目一直疯狂报错:class java.util.Arrays A r r a y L i s t c a n n o t b e c a s t t o c l a s s j a v a . u t i l . A r r a y L i s t ( j a v a . u t i l . A r r a y s ArrayList cannot be cast to class java.util.ArrayList (java.util.Arrays ArrayListcannotbecasttoclassjava.util.ArrayList(java.util.ArraysArrayList and java.util.ArrayList are in module java.base of loader 'bootstrap')


原因分析

Arrays.asList() 方法是 Java 中用于将数组转换为 List 的方法。但是Arrays.asList() 返回的 List 并不是 java.util.ArrayList 对象,而是 Arrays 类的内部类 ArrayList 的对象。

这个内部类 ArrayList 继承自 AbstractList,它是 Arrays 类的一个私有静态类。Arrays.ArrayList 类并没有实现一些 ArrayList 的修改操作,因此它的大小是固定的,并且不支持增删改操作。尝试在其上执行这些操作会抛出 UnsupportedOperationException。


解决方案

java 复制代码
// 使用ArrayList构造器创建一个新的ArrayList对象
List<String> list = new ArrayList<>(Arrays.asList(array));
相关推荐
pshdhx_albert5 小时前
AI agent实现打字机效果
java·http·ai编程
沉鱼.446 小时前
第十二届题目
java·前端·算法
赫瑞6 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
周末也要写八哥8 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
惜茶8 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
杰克尼9 小时前
springCloud_day07(MQ高级)
java·spring·spring cloud
NHuan^_^11 小时前
SpringBoot3 整合 SpringAI 实现ai助手(记忆)
java·人工智能·spring boot
Mr_Xuhhh11 小时前
从ArrayList到LinkedList:理解链表,掌握Java集合的另一种选择
java·数据结构·链表
错把套路当深情11 小时前
Java 全方向开发技术栈指南
java·开发语言
han_hanker11 小时前
springboot 一个请求的顺序解释
java·spring boot·后端