原文: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