在遍歷列表時,可能會刪除項目。迭代時從列表中刪除項目
private void removeMethod(Object remObj){
Iterator<?> it = list.iterator();
while (it.hasNext()) {
Object curObj= it.next();
if (curObj == remObj) {
it.remove();
break;
}
}
}
當上面的代碼可能發生在另一個循環中時,會發生問題,該循環正在主動迭代原始列表。
private void performChecks(){
for(Object obj : list){
//perform series of checks, which could result in removeMethod
//being called on a different object in the list, not the current one
}
}
如何從遍歷列表中刪除未知對象?
例
我有偵聽的對象的列表。在通知事件的聽衆時,可能不再需要其他聽衆。
您是否嘗試過使用增強for循環和.remove()方法?和一個同步類? – arielnmz 2014-09-01 23:25:48
你的問題不清楚給我。任何例子? – 2014-09-01 23:27:19
removeMethod的加強for循環?這會拋出[ConcurrencyModificationExceptionError](http://docs.oracle.com/javase/7/docs/api/java/util/ConcurrentModificationException.html) – 2014-09-01 23:27:20