Tôi có một ArrayList mà tôi muốn lặp lại. Trong khi lặp lại nó, tôi phải loại bỏ các yếu tố cùng một lúc. Rõ ràng điều này ném a java.util.ConcurrentModificationException
.
Thực hành tốt nhất để xử lý vấn đề này là gì? Tôi có nên nhân bản danh sách đầu tiên?
Tôi loại bỏ các phần tử không phải trong chính vòng lặp mà là một phần khác của mã.
Mã của tôi trông như thế này:
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
có thể gọi Test.removeA()
;