Как избежать исключения java.util.ConcurrentModificationException при повторении и удалении элементов из ArrayList

У меня есть список 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 () ;

185
задан Belphegor 23 January 2018 в 00:25
поделиться