java.util.ConcurrentModificationException

原因分析:非线程安全的集合(如:ArrayList,LinkedListHashMap,HashSet…)中,都会有一个叫做modCount的变量,用来记录你从结构上修改此容器的次数,如增删改。同时,该值不可在你对该集合进行迭代时更改,否则就会抛出ConcurrentModificationException。即对一个非线程安全的集合遍历的同时,不可对该集合进行了增删的操作
错误代码:

          for(Contacts contacts1:contacts){
              if(contacts1.getId().equals(id)){
                    contacts.remove(contacts1);
                }
            }

改正代码:

       for(int i = 0;i<contacts.size();i++){
             Contacts contacts1 = contacts.get(i);
             if(contacts1.getId().equals(id)){
                 contacts.remove(contacts1);
                 i--;
             }
         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java.util.ConcurrentModificationException是Java编程语言中的一种异常,它通常在并发修改集合时抛出。当使用iterator.hasNext()操作迭代器时,如果在迭代过程中集合发生了改变(如插入或删除元素),就会抛出该异常。该异常的出现原因是由于集合在迭代过程中被修改,导致迭代器检测到并抛出异常。 解决Java.util.ConcurrentModificationException的方法可以通过以下几种途径: 1. 使用Iterator的remove()方法来删除元素,而不是使用集合自身的remove()方法。这是因为Iterator的remove()方法是安全的,可以避免并发修改异常的发生。 2. 使用synchronized关键字或其他同步机制来保证对集合的访问是线程安全的,避免在迭代过程中发生并发修改。 3. 使用并发集合类,如ConcurrentHashMap或CopyOnWriteArrayList,这些类内部使用了一些机制来保证并发修改的安全性,从而避免了ConcurrentModificationException的发生。 总之,要避免Java.util.ConcurrentModificationException异常的发生,需要注意在迭代集合时不要在迭代过程中对集合进行修改,并采取适当的同步机制或使用线程安全的集合类来确保并发修改的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java.util.ConcurrentModificationException 解决方法](https://download.csdn.net/download/weixin_38723192/14093201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java.util.ConcurrentModificationException: null 报错解决](https://blog.csdn.net/qq_51741039/article/details/126008727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值