遍历对象的list删除时报错问题。

我们对一个对象的list或者map进行删除操作时,可能会这么写

        for(Distributor distributor:distributorList){
            String distributorShort = distributor.getDistributorShort();
            if(!MyString.isNoEmpty(distributorShort)||distributorShort.toUpperCase().indexOf(queryDistributorNameShowDis)==-1){
                distributorList.remove(distributor);
            }
        }

但是执行时,会出现一个线程问题的异常 Exception in thread "main" java.util.ConcurrentModificationException ,不能这么删除

这个异常产生的原因有几个。

一是直接对集合调用删除操作而不是在枚举器上。

二是不同的线程试图对集合进行增删操作的时候。

解决办法就是用Iterator,就不会报这个异常了。

            Iterator<Distributor> it = distributorList.iterator();
            while(it.hasNext()){
                Distributor distributor = it.next();
                String distributorShort = distributor.getDistributorShort();
                if(!MyString.isNoEmpty(distributorShort)||distributorShort.toUpperCase().indexOf(queryDistributorNameShowDis)==-1){
                    it.remove();
                }
            }
时间: 2024-11-08 20:14:27

遍历对象的list删除时报错问题。的相关文章

view里文书删除时报错的解决案

加一个中间文书存储doc: If Not udoc Is Nothing Then    Dim askme As Integer    askme = ws.Prompt (PROMPT_YESNO, _    "クリアの確認", "既にデータがあります.先月のデータを直接削除しますか?手操作で削除しますか?")        If askme = 1 Then            Do While Not udoc Is Nothing            

将具有关联关系的两个表从hibernate查询出来转成json对象时报错

第一篇文章: 相信大家做过JSON相关的东西对这个异常并不陌生,这个异常是由于JSONObject插件内部会无限拆解你传入的对象,直到没有可拆解为止,问题就在这,如果你传入的对象有外键关系,或者相互引用,那么内部就会死循环,也就会抛出这个异常 解决办法,我们先说一种网上通用的:过滤      不错,过滤肯定会解决该问题,过滤也有两种方法: 一种是通过 Java代码   jsonConfig.setExcludes(new String[]{"dianYuanHeSuans"}) 该方法

Django在使用models生成数据库表时报错: __init__() missing 1 required positional argument: &#39;on_delete&#39;

Django 提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作.Django 模型基础知识: 1.每个模型是一个 Python 类,继承 django.db.models.model 类. 2.该模型的每个属性表示一个数据库表字段. 程序代码如下: # 创建应用程序数据表模型(对应数据库的相关操作) from django.db import models # 导入models模块 class Event(models.Model): # 创建Event类,继承m

Entity中Lazy Load的属性序列化JSON时报错

The server encountered an internal error that prevented it from fulfilling this request.org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: failed to lazily initialize a collection of role: com.party.dinner.entit

Spacemacs启动时报错:Symbol&#39;s funciton definition is void: cl-struct-define

解决方法很简单:删除.emacs.d/elpa/ 目录下面所有的*.elc文件. 原因:elc是el文件的预编译文件,类似py文件的pyc文件,是一种二进制文件,不同版本的emacs是不兼容的. 所以删掉所有的elc文件后重新运行emacs就可以了. 方法: cd ~/.emacs.d/elpa rm -r **/*.elc Spacemacs启动时报错:Symbol's funciton definition is void: cl-struct-define

Java 集合(List、Set)遍历、判断、删除元素时的小陷阱

开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 1. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素.说那么说可能也说不清楚,看以下示例: import java.util.ArrayList; import java.util.List; public class ListTest_Unwork { public static v

JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和ArrayList.HashSet.LinkedList等等.根据核心框架图,相信我们都已经对Collection这个JavaSE中最常用API之一有一个较为全面的认识. 这个学习过程,还可以推及到其他常用开源框架和公司项目的学习和熟悉上面.借助开发工具或说明文档,先是对项目整体有一个宏观的认识,再根

解决ThinkPHP关闭调试模式时报错的问题汇总

解决ThinkPHP关闭调试模式时报错的问题汇总 案例一: 最近用ThinkPHP开发一个项目,本地开发测试完成上传到服务器后,第一次打开正常,再刷新页面时就出现 "页面调试错误,无法找开页面,请重试"的错误. 明明本地设置define('APP_DEBUG', false) 运行没点问题,怎么放到服务器上就出错了昵? baidu,Google还是没有找到解决方案,突然发现项目APP_Name/Runtime/Cache目录和APP_Name/Runtime/Logs目录没有可写权限,

使用Eclipse自带的Maven插件创建Web项目时报错:

问题描述: 使用Eclipse自带的Maven插件创建Web项目时报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:RELEASE from any of the configured repositories. Could not resolve artifact org.apache.maven.archetypes:maven-archetype-webapp:pom:REL