不要在 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();
}
}
本文出自 “JianBo” 博客,請務必保留此出處http://jianboli.blog.51cto.com/12075002/1971180
不要在 foreach 循環裏進行元素的 remove / add 操作
相關推薦
不要在 foreach 循環裏進行元素的 remove / add 操作
foreach remove在foreach 循環裏面,不能用remove方法,因為當list裏面的最後一個元素被remove時候,會報錯。摘自《阿裏巴巴Java開發手冊》【強制】不要在 foreach 循環裏進行元素的 remove / add 操作。 remove 元素請使用 Iterator方式,如果並
為什麽禁止在 foreach 循環裏進行元素的 remove/add 操作
詳細 控制 string 得到 each lec 就是 編譯 分享 首先看下邊一個例子,展示了正確的做法和錯誤的錯發: 這是為什麽呢,具體原因下面進行詳細說明: 1、foreach循環(Foreach loop)是計算機編程語言中的一種控制流程語句,通
為什麽阿裏禁止在 foreach 循環裏進行元素的 remove/add 操作
調用鏈 不想 增強 arr 9.png 為我 相等 手冊 正確姿勢 在阿裏巴巴Java開發手冊中,有這樣一條規定:但是手冊中並沒有給出具體原因,本文就來深入分析一下該規定背後的思考。1.foreach循環foreach循環(Foreach loop)是計算機編程語言中的一種
為什麼在foreach迴圈中進行元素remove/add操作,會拋ConcurrentModificationException 異常?
執行以下程式碼: @Test public void test() { List<String> list = new ArrayList<>(); list.add("A"); list.add("B");
在-for 循環裏面如何利用ref 操作dom
操作dom this ted plain for 循環 rip cti javascrip word 由於dom 元素是在渲染之後才能操作,所以如果想取到dom元素,要放到mounted()這個生命周期函數裏面,並且還要用this.$nextTick(function ()
for循環裏面不要進行remove操作,for循環裏remove元素後,list的下標會減小,導致遍歷不完全
body 代碼 2.0 class equals tostring arraylist 執行 align p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.0px "Helvetica
不要在foreach迴圈裡進行元素的remove/add操作
阿里巴巴java開發手冊的建議 在看阿里巴巴java開發手冊時,有一條建議是這樣的。 【強制】不要在foreach迴圈裡進行元素的remove/add操作。remove元素請使用Iterator方式,如果併發操作,需要對Iterator物件加鎖。 foreach遍歷集合,其實是走的Itera
foreach循環時動態往數組裏添加數據
示例 一點 元素 ron 錯誤 一個 一起 你在 需要 今天在用TP做項目的時候遇到一個問題,foreach的時候需要動態往數組裏添加數據,示例代碼如下: $arr = array( array(‘id‘=>‘字符串1‘,‘name‘=>‘字符
foreach迴圈中為什麼不要進行remove/add操作
先來看一段程式碼,摘自阿里巴巴的java開發手冊1 List<String> a = new ArrayList<String>(); 2 a.add("1"); 3 a.add("2"); 4 for (String temp : a) { 5
為什麼阿里禁止在 foreach 迴圈裡進行元素的 remove/add 操作
在阿里巴巴Java開發手冊中,有這樣一條規定: 但是手冊中並沒有給出具體原因,本文就來深入分析一下該規定背後的思考。 1.
增強for循環 -- foreach循環
單單 [] for循環 tle hash 下標 其他 行修改 oid 1 作用 簡化叠代器的書寫格式。(註意:foreach循環的底層還是使用了叠代器遍歷。) 2 適用範圍 如果是實現了Iterable接口的對象或者是數組對象都可以使用foreach循環。
Java語法糖2:foreach循環
span arraylist iter col 聯想 length pop nts ets 增強for循環與普通for循環相比,功能更強並且代碼更簡潔 寫一段代碼: @Test public void test_foreach() { Li
foreach 循環對象的方法
及其 tro 類型 一個 style 初始化 方法 循環 給定 PHP 4 引入了 foreach 結構,和 Perl 以及其他語言很像。這只是一種遍歷數組簡便方法。foreach 僅能用於數組,當試圖將其用於其它數據類型或者一個未初始化的變量時會產生錯誤。有兩種語法,第二
foreach循環賦值問題
問題 exp dmi weight sse min color iss isset foreach ($list as $key=>$val){ $data=array();//這一個一定要加上不然循環後,modify_one,modify_two都會賦值
Java的叠代和foreach循環
com 折扣 sys 條件表達式 amba num numbers html 輸出結果 Java的叠代(interation statement) Java的叠代(interation statement) 其實就是循環控制語句while、do-while和for,因為他們
Python循環列表刪除元素問題
替代 循環 pan 不能 移動 列表 nbsp python 判斷 有人會遇到這種問題,遍歷列表,想刪除列表中的某幾個元素,執行後發現有些並沒有刪除到, 比如以下代碼 a=[1,2,3,4,5,6]print(a) for i in a: if i==3 or i
關於“foreach循環”中遇到的幾個問題總結
www script 手機 check 後來 ref hiberna for table 2017-11-09 轉自:https://www.cnblogs.com/sushu-yaya/p/6823302.html 用於自己學習所用 1.列表頁面用"foreach循環"的
foreach循環遍歷 行合並
jquer ddc his sta add src foreach app stat <%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="/WEB-INF/views/i
php學習筆記-foreach循環
之前 意義 echo div names 學習 clas php學習 兩種 顧名思義,foreach是for each的連寫,不是for reach。意思就是對數組中的每個元素都要處理一次。 foreach只能用來處理數組。 有兩種用法 foreach(array as
php foreach循環中的變量
影響 ray 如果 中一 manual arr 最後一個元素 變量 true 使用foreach的時候出現了一個奇怪的現象,其中一個數組變量的最後一個值莫名其妙被修改了,查看php手冊foreach說明發現 Warning 數組最後一個元素的 $value 引用在 fore