可是我輸出沒有異常啊?為什么呢?
2 回答

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
理論上來說,這種情況會引發異常java.util.ConcurrentModificationException 異常,
但是注意有個例外, 就是刪除的是倒數第二個元素時, 不會拋出該異常.
1234567891011121314151617181920 | import java.util.ArrayList; public class Demo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add( "A" ); list.add( "B" ); list.add( "C" ); list.add( "D" ); list.add( "E" ); for (String temp : list) { if ( "D" .equals(temp)) { //除了倒數第二個元素 "D" ,刪除其余的元素都會拋出異常 list.remove(temp); } } System.out.println(list); } } |
具體原因可以查看ArrayList等源碼, 里面的源代碼寫了什么情況下會拋出ConcurrentModificationException 異常.
比如HashMap 在只有一個元素的時候, 邊循環邊刪除也不拋出異常,
但是特殊的例子, 沒必要記.!!
因為寫代碼的時候 要盡量避免 一邊增強for循環遍歷一邊增刪修改集合
添加回答
舉報
0/150
提交
取消