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

相关推荐
草莓熊Lotso几秒前
【C语言预处理详解(下)】--#和##运算符,命名约定,命令行定义 ,#undef,条件编译,头文件的包含,嵌套文件包含,其他预处理指令
c语言·开发语言·经验分享·笔记·其他
魔镜魔镜_谁是世界上最漂亮的小仙女18 分钟前
java基础知识【java核心类】
java·后端
想用offer打牌29 分钟前
一站式了解CompletableFuture的用法基础(保姆版🥹)
java·后端·面试
33255_40857_2805929 分钟前
Spring依赖注入,让你的代码自动"牵手"
java·spring
Chenyu_31034 分钟前
05.MySQL表的约束
android·开发语言·网络·数据库·网络协议·mysql·php
小白写代码hh34 分钟前
JAVA中的注解和泛型
java·注解·泛型
lovebugs43 分钟前
Java利用构建器模式重构Excel导出工具类
java·后端
珹洺1 小时前
数据库系统概论(十二)SQL 基于派生表的查询 超详细讲解(附带例题表格对比带你一步步掌握)
java·数据库·sql
zwjapple1 小时前
Eclipse集成lombok
java·ide·eclipse
枣伊吕波1 小时前
第十二节:第四部分:集合框架:List系列集合:LinkedList集合的底层原理、特有方法、栈、队列
java