Mam ArrayList, który chcę iterować. Podczas iteracji po nim muszę jednocześnie usuwać elementy. Oczywiście rzuca tojava.util.ConcurrentModificationException
.
Jaka jest najlepsza praktyka radzenia sobie z tym problemem? Czy powinienem najpierw sklonować listę?
Usuwam elementy nie z samej pętli, ale z innej części kodu.
Mój kod wygląda następująco:
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
może zadzwonić Test.removeA()
;