我有一個List,並且我想循環訪問該List並在某些情況下刪除某些記錄庫。我在做什麼Java:在for-each循環中刪除List中的記錄時發生異常
public void foo(List<Bar> recordList){
for(Bar bar : recordList){
if(bar.someCondition()){
recordList.remove(bar);
}
}
}
此代碼生成異常。如果我使用iterator然後正常工作
public void foo(List<Bar> recordList){
Iterator<Bar> iter = recordList.iterator();
while(iter.hasNext()){
Bar bar = iter.next();
if(bar.someCondition()){
iter.remove();
}
}
}
我想我的問題:
爲什麼代碼的第一塊不起作用?
如何使第一段代碼起作用?
你忘了返回類型'void' –
http://stackoverflow.com/questions/1921104/loop-on-list-with-remove和http://stackoverflow.com/questions/223918/java-efficient-等價於去除 - 迭代 - 收集 –