加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在迭代此集合时避免ConcurrentModificationExceptio

发布时间:2020-12-14 05:52:23 所属栏目:Java 来源:网络整理
导读:我需要迭代一系列项目有时会同时添加到该集合中.但是,如果我在迭代时添加,那么我只是通过突破迭代循环来开始迭代.从头开始重新开始迭代.然而,这导致了 ConcurrentModificationException的. [下面的代码] ListInteger collection = new ArrayList(); for (Int
我需要迭代一系列项目&有时会同时添加到该集合中.但是,如果我在迭代时添加,那么我只是通过突破迭代循环来开始迭代.从头开始重新开始迭代.然而,这导致了
ConcurrentModificationException的. [下面的代码]
List<Integer> collection = new ArrayList<>();
    for (Integer lobId: collection) {
         ..
         if (someCondition) {
             collection.add(something); 
             break; 
         }
    }

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

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

编辑:

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

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

解决方法

这段代码不能导致ConcurrentModificationException,因为在你添加一个元素之后你就破坏了循环并且不再使用迭代器了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读