我們在在討論這個問題之前,先考慮以下**的輸出結果:
arraylist
list =
newarraylist
(arrays.
aslist
("a"
,"b"
,"c"
,"d"))
;for
(int i=
0;isize()
;i++
)system.out.
println
(list)
;
輸出結果:
[b,d]
以上**的目的是想遍歷刪除list中所有元素,但是結果卻沒有成功。
原因是忽略了乙個關鍵的問題:
當乙個元素被刪除時,列表的大小縮小並且下標也會隨之變化,所以當你想要在乙個迴圈中用下標刪除多個元素的時候,它並不會正常的生效。
也有些人知道以上**的問題就由於陣列下標變換引起的。所以我們試試使用增強for迴圈的形式:
arraylist
list =
newarraylist
(arrays.
aslist
("a"
,"b"
,"c"
,"d"))
;for
(string s:list)
}
執行以上**會丟擲concurrentmodificationexception異常
但是加乙個break就不會了
arraylist
list =
newarraylist
(arrays.
aslist
("a"
,"b"
,"c"
,"d"))
;for
(string s:list)
}
最終找到原因,我們需要使用iterator:
arraylist
list =
newarraylist
(arrays.
aslist
("a"
,"b"
,"c"
,"d"))
;iterator
iter = list.
iterator()
;while
(iter.
hasnext()
)}
next()方法必須在呼叫remove()方法之前呼叫。如果在迴圈過程中先呼叫remove(),再呼叫next(),就會導致異常concurrentmodificationexception。 python列表迴圈中刪除元素
遍歷n個元素的列表,每次迴圈時刪除當前元素,那麼要多少次結束迴圈呢。arr 0,1,2,3,4 for x in arr print 本次刪除的元素 x arr.remove x print 當前列表內容 arr print in loop print out loop print arr 結果如下...
迴圈中刪除List中的元素
remove 方法刪除元素後會立刻更新list的size,因此index也發生了變化,會導致漏掉某些元素。for int i 0 i解決方案一 在刪除某乙個元素後直接break,當然這種情況只適合刪除乙個特定元素,不適合刪除多個元素 解決方案二 index回退一位,如下 for int i 0 i刪...
Python迴圈中刪除列表元素會出現的 坑
python迴圈中刪除列表元素會出現的 坑 前言 在python中,如果在迴圈過程中remove 刪除列表元素可能會出現的一些不易發現的bug。目的 a 11,22,33,44,55,66,77 利用for迴圈刪除a中的33和44錯誤示例 for i in a if i 33 or i 44 a.r...