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

ArrayList的subList的数据仍是集合

ArrayList的subList结果不可强转成ArrayList,否则会抛出 ClassCastException异常 •

级别: 【CRITICAL】 •

规约类型:BUG •

最坏影响: 程序错误,抛出异常

说明:subList 返回的是ArrayList的内部类SubList,并不是 ArrayList而是ArrayList的一个视图,一个片段,对于SubList子列表 的所有操作最终会反映到原列表上。

如果要避免应用,可以重建一个对 象

List subList = new ArrayList<>(list.subList(1, 4));

反例:List test = (ArrayList) list.subList(0, 1);

在subList场景中,高度注意对原列表的修改,会导致子列表的遍历、增 加、删除均产生ConcurrentModificationException异常

• 级别: 【CRITICAL】

• 规约类型:BUG

• 最坏影响: 程序错误,抛出异常

• 说明: ArrayList 创建SubList时,会把modCount传给子列表 subList。ArrayList增加或者删除时会修改modCount, 而子列表遍 历时会判断subList的modCount和ArrayList的modCount,不一 致就会抛出ConcurrentModificationException

反例:

List originList = new ArrayList(); originList.add("22");

List subList = originList.subList(0, 1);

originList.add("22"); //warn

subList.add("33"); //ConcurrentModificationException

相关文章:

  • 微电网与分布式能源:智能配电技术的场景化落地
  • 面试期间大频率出现的问题
  • App测试小工具
  • 机器学习中的距离度量与优化方法:从曼哈顿距离到梯度下降
  • Linux下使用MTK的SP_Flash_tool刷机工具
  • Java基础第20天-JDBC
  • 案例:陌陌聊天数据分析
  • Apache HTTPD 换行解析漏洞
  • Linux常用命令整理
  • 开源链动2+1模式、AI智能名片与S2B2C商城小程序融合下的社交电商营销新范式
  • 如何在同一个电脑配置多个jdk版本并随意切换
  • Android 接口定义语言 (AIDL)
  • 多模态大语言模型arxiv论文略读(二十一)
  • 数据战略新范式:从中台沉淀到服务觉醒,SQL2API 如何重塑数据价值链条?
  • vscode使用Linux的vi命令改错怎么回退
  • AIDL 中如何传递 Parcelable 对象
  • JVM 概述
  • 基于Java,SpringBoot,Vue,HTML家政服务预约系统设计
  • C语言学习之两个数值交换的算法
  • SOME/IP中”客户端消费“及”服务端提供”的解析
  • 商务部:4月份以来的出口总体延续平稳增长态势
  • 央行副行长:增强外汇市场韧性,坚决对市场顺周期行为进行纠偏
  • 央视曝光假进口保健品:警惕!保税仓发货不等于真进口
  • 专访|伊朗学者:美伊核谈不只是改革派立场,但伊朗不信任美国
  • 罗马教皇方济各葬礼在梵蒂冈举行
  • 70后供销合作总社理事会原副主任侯顺利任中国融通外部董事