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

相关推荐
FAFU_kyp1 天前
Rust 模式匹配:match 与 if let 详解
开发语言·后端·rust
豆沙沙包?1 天前
2026年--Lc342-841. 钥匙和房间(图 - 广度优先搜索)--java版
java·算法·宽度优先
星火开发设计1 天前
C++ 运算符全解析:算术、关系、逻辑与位运算
java·开发语言·c++·学习·位运算·知识·操作符
AI_56781 天前
Postman接口测试极速入门指南
开发语言·人工智能·学习·测试工具·lua
2401_882351521 天前
Flutter for OpenHarmony 商城App实战 - 购物车实现
java·flutter·dubbo
Emilin Amy1 天前
【C++】【STL算法】那些STL算法替代的循环
开发语言·c++·算法·ros1/2
遇印记1 天前
蓝桥java求最大公约数
java·开发语言
ONExiaobaijs1 天前
【无标题】
java·开发语言·spring·maven·程序员创富
IMPYLH1 天前
Lua 的 String(字符串) 模块
开发语言·笔记·单元测试·lua
符哥20081 天前
Mybatis和Mybatis-plus区别
java·开发语言·mybatis