我需要遍历一组项目,有时还需要同时添加到该组中。但是,如果在迭代过程中进行添加操作,则需要通过退出迭代循环并从头开始重新开始迭代来解决。然而,这会导致ConcurrentModificationException
异常。[代码如下]
List<Integer> collection = new ArrayList<>();
for (Integer lobId: collection) {
..
if (someCondition) {
collection.add(something);
break;
}
}
如何避免ConcurrentModificationException
的情况下完成以上操作?
是否可以使用Array
而非ArrayList
来避免此异常?是否有任何专用集合类型可供使用?
--
编辑:
我不想为此ArrayList
创建一个新副本,因为我需要多次重复此迭代过程,直到满足某些要求。每次创建新副本都会带来一些额外开销,如果可能的话,我想避免这种情况。
另外,如果可能的话,我想在该集合中保持排序和唯一值。库中是否有任何即可使用的东西?否则,我可以在迭代过程结束时对其进行排序并删除重复项。这对我也没问题。