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

相关推荐
隐积7 小时前
3.1.7.Qt容器大家族(3):QVariant——万能盒子
开发语言·qt
都叫我大帅哥10 小时前
Java JJWT 完全指南:从入门到生产级实践
java
名字还没想好☜10 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
初级代码游戏11 小时前
iOS开发 Swift 速记1:变量和基本数据类型
开发语言·ios·swift
前端开发张小七11 小时前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
酷在前行12 小时前
【R生态】PERMANOVA 进阶实战:距离选择、PERMDISP、两两比较与受限置换(保姆级教程)
开发语言·r语言
ThsPool12 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
cxr82812 小时前
Graphify vs GitNexus vs CodeGraph — 三工具架构深度对比
开发语言·架构·知识图谱
赤壁小虾12 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
废弃的小码农13 小时前
功能测试--Day07--Python编程基础
开发语言·python