原文:foreach循环里不能remove/add元素的原理

foreach循环 foreach循环 Foreach loop 是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。Java语言从JDK . . 开始引入foreach循环。在遍历数组 集合方面,foreach为开发人员提供了极大的方便。通常也被称之为增强for循环。 在日常开发中,foreach循环用的非常多,但是有一点要非常小心,就是不能在这个循环里对数组或者集合里的元 ...

2019-03-30 12:56 1 1442 推荐指数:

查看详情

为什么禁止在 foreach 循环进行元素remove/add 操作

先看一个例子: 在一个增强for循环中对集合元素进行添加与删除,然后执行这个代码,结果:抛出异常 为什么呢,请看这篇文章:https://juejin.im/entry/5c7c7cae518825620677eebb 解决方法,用迭代器 ...

Thu Mar 07 00:05:00 CST 2019 0 949
不要在 foreach 循环进行元素remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁

下图是来自阿里巴巴java开发手册,里面的例子有些特殊,在后面会有一般的例子,请往后看。 个人理解:在foreach循环里面进行元素remove/add操作就是:在foreach循环使用集合本身的remove/add方法, Iterator方式就是使用集合对应的iterator的remove ...

Tue Aug 06 19:18:00 CST 2019 0 596
foreach循环中为什么不要进行remove/add操作

先来看一段代码,摘自阿里巴巴的java开发手册 此时执行代码,没有问题,但是需要注意,循环此时只执行了一次。具体过程后面去分析。再来看一段会出问题的代码: 输出为: Exception in thread "main ...

Tue Jul 11 16:16:00 CST 2017 3 14840
java foreach 循环原理

java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录。 首先来看看foreach能够使用的类型是什么: 编译器报错原因写的很清楚了,要求:数组 ...

Mon Mar 21 05:22:00 CST 2016 0 9214
利用forEach循环Dom元素

大家都知道forEach循环数组用的,而且很方便,可以丢掉for循环了,但是它不能循环Dom元素。其实我们可以利用call来完成forEach循环Dom; 假设有这样的HTML结构: <ul class="box"> <li>1</li> < ...

Sun Oct 09 22:21:00 CST 2016 0 5153
Array.forEach循环实现break

最近遇到一个问题,需要在forEach 实现 break。 在网上找了一下,看到几种方案: 1. throw 法 抛出一个可以与别的错误区别开来的错误(这个方法个人觉得有点麻烦) 2. 空跑循环 在外层加一个标识,这种会影响性能。 3. 使用every ...

Wed Apr 18 02:24:00 CST 2018 0 888
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM