1. 程式人生 > >不要在 foreach 循環裏進行元素的 remove / add 操作

不要在 foreach 循環裏進行元素的 remove / add 操作

foreach remove

在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 操作