У мене є ArrayList, який я хочу повторити. Під час ітерації над ним я повинен одночасно видаляти елементи. Очевидно, це кидає а java.util.ConcurrentModificationException
.
Яка найкраща практика для вирішення цієї проблеми? Чи слід спершу клонувати цей список?
Я видаляю елементи не в самій циклі, а в іншій частині коду.
Мій код виглядає приблизно так:
public class Test() {
private ArrayList<A> abc = new ArrayList<A>();
public void doStuff() {
for (A a : abc)
a.doSomething();
}
public void removeA(A a) {
abc.remove(a);
}
}
a.doSomething
може зателефонувати Test.removeA()
;