不要在 foreach 循环里进行元素的 remove / add 操作
在foreach 循环里面,不能用remove方法,因为当list里面的最后一个元素被remove时候,会报错。
摘自《阿里巴巴Java开发手册》
【强制】不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。
反例:
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("1".equals(temp)){
a.remove(temp);
}
}
说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的
结果吗?
正例:
Iterator<String> it = a.iterator();
while(it.hasNext()){
String temp = it.next();
if(删除元素的条件){
it.remove();
}
}
不要在 foreach 循环里进行元素的 remove / add 操作相关推荐
- 不要在foreach循环里进行元素的remove/add操作。remove元素请使用iteratot方式,如果并发操作,需要对Iterator对象加锁
不要在foreach循环里进行元素的remove/add操作.remove元素请使用iteratot方式,如果并发操作,需要对Iterator对象加锁
- 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 foreach循环 foreach循环(Foreach loop)是计算机编程 ...
- 【Java开发规范】禁止在 foreach 循环里进行元素的 remove/add 操作
在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. foreach循环 Foreach循环(Foreach loop)是计算机编程语言 ...
- java foreach 删除_为什么java不要在foreach循环里进行元素的remove/add操作
首先,这涉及多线程操作,Iterator是不支持多线程操作的,List类会在内部维护一个modCount的变量,用来记录修改次数 举例:ArrayList源码 protected transient ...
- java不进入for_为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?...
在阅读<阿里巴巴Java开发手册>时,发现有一条关于在 foreach 循环里进行元素的 remove/add 操作的规约,具体内容如下: 错误演示 我们首先在 IDEA 中编写一个在 f ...
- 为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作...
在阅读<阿里巴巴 Java 开发手册>时,发现有一条关于在 foreach 循环里进行元素的 remove/add 操作的规约,具体内容如下:"不要在foreach循环里进行 r ...
- 使用foreach循环遍历集合元素
使用foreach循环遍历集合元素 Java5.0 提供了foreach循环迭代访问Collection和数组 遍历操作不需要获取Collection或数组的长度,无需使用索引访问元素 遍历集合的底层 ...
- php foreach 单箭头,PHP Foreach循环具有单个元素
我有一个函数来解析嵌套数组中的"条目": $data = Array( [date] => 'date' [entry] => Array( [0] => Arr ...
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...
最新文章
- STM32开发 -- UTC、UNIX时间戳、北京时间之间的转换
- 黑龙江大学计算机调剂信息,黑龙江大学各学院2019考研调剂信息汇总(4月1日)
- 最短路径次短路径算法
- 由浅入深CIL系列:5.抛砖引玉:判断string是否为空的四种方法的CIL代码看看效率如何?...
- 基于嵌入式操作系统VxWorks的多任务并发程序设计(5)――中断与任务
- 如何吧家庭网络从计算机去掉,3个简单电脑、路由器设置,迅速解决网络瓶颈提高家庭网络速度...
- idea研习录(01)——ideaIU-2017.3.7安装详解
- 不上火勤眨眼远离干眼症
- 存储卡被格式化了咋恢复文件?
- 期刊论文发表的作者顺序有什么讲究吗
- Wi-Fi 7全新升级,小米蓄势待发!
- cms php vue 开源_lucms - vue 与 Laravel 开发的后台管理系统
- 农业信息化技术导论划重点笔记-农业工程与信息技术
- LeetCode-Revers_Bits
- FairyGUI摇杆
- 程序员幽默:让你笑到肚子痛的搞笑动图
- 猫盘安装群晖synology (by quqi99)
- 原生JavaScript实现弹球游戏
- 解决Safari在线观看视频卡顿的问题
- 2块一瓶,2空瓶换一瓶,4瓶盖换一瓶,10块钱喝几瓶?
热门文章
- [Python] L1-021. 重要的话说三遍-PAT团体程序设计天梯赛GPLT
- 蓝桥杯 ALGO-39 算法训练 数组排序去重
- LeetCode 230. Kth Smallest Element in a BST
- 【操作系统】死锁-思维导图
- 蓝桥杯 ADV-108算法提高 分数统计
- kaggle房价预测特征意思_Kaggle竞赛丨房价预测(House Prices)
- c语言命令行参数怎么输入_C语言程序设计——这个函数原型你看懂了吗
- JS数组遍历和获取数组最值
- springboot,hibernate,exception no session 问题解决
- java WebSocket的实现以及Spring WebSocket