原文:foreach循环中为什么不要进行remove/add操作

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

2017-07-11 08:16 3 14840 推荐指数:

查看详情

为什么禁止在 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元素的原理

foreach循环 ​    foreach循环Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。Java语言从JDK 1.5.0开始引入foreach循环。在遍历数组、集合方面,foreach为开发人员提供了极大的方便。通常也被称之为 ...

Sat Mar 30 20:56:00 CST 2019 1 1442
php foreach循环中的变量

使用foreach的时候出现了一个奇怪的现象,其中一个数组变量的最后一个值莫名其妙被修改了,查看php手册foreach说明发现 Warning 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。 有这样的警告。使用unset ...

Fri May 18 07:04:00 CST 2018 0 3106
为什么iterator,foreach遍历时不能进行remove操作

Exception in thread "main" java.util.ConcurrentModificationException 并发修改异常引发的思考! 1 foreach循环删除元素   ①list遍历删除元素时会报错,比如下面删除字符串"aa",也有遍历不报错的例子,看下面的例子 ...

Tue Nov 07 23:36:00 CST 2017 2 2999
ArrayList在for循环中remove所产生的问题

背景: 刚入职公司的时候,就听到面试官在面试过程中提问ArrayList在for循环中remove的问题,当时很庆幸自己没被问到,一年后又一次听到面试在问这个问题。发现自己还没有深入研究一下,所以就有了今天这篇文章。 代码如下: 以上代码的执行会导致以下异常: 今天通过一种通俗易懂 ...

Wed Apr 21 23:02:00 CST 2021 1 416
HashMap循环中Remove带来的问题

HashMap在循环中执行remove操作会报错,引发了并发修改异常。 解决办法很多: 1、复制一个Map,在Map副本中循环,Map本体执行remove方法。 2、使用迭代器移除当前迭代元素,iterator了解一下。 3、使用ConcurrentHashMap,它是线程安全 ...

Fri Mar 30 01:45:00 CST 2018 0 2783
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM