当前位置: 首页 > news >正文

记一次Arrays.asList集合删除的错误

关键字:可变ArrayList和 不可变ArrayList

在项目中使用了从一个集合中删除另外一个集合中的元素,报异常。

List<String> order = Arrays.asList("a","b","c");
order.removeAll(Arrays.asList("a"));

错误提示:

Exception in thread "main" java.lang.UnsupportedOperationExceptionat java.util.AbstractList.remove(AbstractList.java:161)at java.util.AbstractList$Itr.remove(AbstractList.java:374)at java.util.AbstractCollection.removeAll(AbstractCollection.java:376)at com.qihoo.finance.weloan.absm.facade.SampleOrderConvertFacadeImpl.main(SampleOrderConvertFacadeImpl.java:322)

原因是 Arrays.asList返回的是 new ArrayList<>(a),这个ArrayList类是Arrays类中的静态内部类java.util.Arrays.ArrayList。该类只能索引、遍历、查询。不能添加或者删除。注意要区别java.util.ArrayList类。

图-1 java.util.Arrays.ArrayList

源代码分析:

java.util.Arrays.ArrayList的remove方法直接继承自AbstractList,没有任何操作直接抛出UnsupportedOperationException。

如果想将数组转为可变list推荐使用

Arrays.stream(array).collect(Collectors.toList())
new ArrayList<>(Arrays.asList(...))

http://www.dtcms.com/a/350833.html

相关文章:

  • Java vs Kotlin 在实际开发中的主要区别与面试题总结
  • 太阳光模拟器在国防军工中的应用
  • k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
  • K8s Pod驱逐机制详解与实战
  • SpringBoot防重放攻击的5种实现方案
  • 什么是数据库?现代数据库类型、示例与应用(2025)
  • 深入理解 iptables:Linux 防火墙从入门到精通
  • Vue3使用 DAG 图(AntV X6)
  • 2024年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Spring Boot 3.5 新特性
  • C++ namespace
  • 国内外大模型体验与评测:洞察智能时代的核心驱动力一、引言
  • DataX HdfsWriter 插件文档
  • 实现自己的AI视频监控系统-第二章-AI分析模块2
  • Java全栈开发面试实战:从基础到微服务的完整技术解析
  • Oracle数据库如何修改字段中的两个字符
  • CF2133C 下界(The Nether)
  • 敏捷价值实证:亚马逊如何用敏捷破解技术项目的“价值迷雾”?
  • 学习做动画3.八方移动
  • SW - 增加导出STL数据中的三角面数,增加别人逆向建模的难度
  • Excel比较两列的值是否相同
  • ViT系列网络系统性分析:从架构创新到未来趋势
  • SSH 反向隧道:快速解决服务器网络限制
  • Frida JavaScript API 总结
  • 【数据库】dbeaver 查询clickhouse,表内时间与真实时间差8小时
  • 基于Springboot + vue3实现的宿舍管理系统
  • [pilot智驾系统] docs | 用户界面状态(UIState)
  • 第十八节:骨骼动画 - 角色动画控制
  • 时间序列异常检测实战:HMM与LSTM方法解析
  • 在华为云服务器上使用Ansible部署LNMP环境【玩转华为云】