迭代此集合时如何避免ConcurrentModificationException?

Raj*_*pta 6 java collections exception guava

我需要迭代一组项目,有时同时添加到该集合.但是,如果我在迭代时添加,那么我只是通过打破迭代循环并从头重新开始迭代来从新鲜开始迭代.然而,这导致了 ConcurrentModificationException.[下面的代码]

    List<Integer> collection = new ArrayList<>();
    for (Integer lobId: collection) {
         ..
         if (someCondition) {
             collection.add(something); 
             break; 
         }
    }
Run Code Online (Sandbox Code Playgroud)

我怎么可能做上面这样的事情避免ConcurrentModificationException

简单地使用an Array代替ArrayList避免这种异常是否正确?这有什么类型的专门收藏吗?

-

编辑:

我不想为这个arraylist创建一个新副本,因为除非完成某些要求,否则我将重复多次整个迭代过程.每次创建一个新副本会带来一些额外的开销,如果可能的话,我想避免.

如果可能的话,我想在该集合中维护一个排序顺序和唯一值.有没有可以在任何图书馆使用的东西?否则我可以在迭代过程结束时对其进行排序并删除重复项.这对我也没问题.

Evg*_*eev 3

此代码不会导致 ConcurrentModificationException,因为在添加元素后,您会中断循环并且不再使用迭代器