文档章节

删除对象的list出现的问题解决

斯芬克斯的翅膀
 斯芬克斯的翅膀
发布于 2016/04/15 18:11
字数 186
阅读 3
收藏 0


我们对一个对象的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();

                }

            }

© 著作权归作者所有

共有 人打赏支持
斯芬克斯的翅膀
粉丝 0
博文 6
码字总数 9281
作品 0
朝阳
程序员
私信 提问
Java编程:删除 List 元素的三种正确方法

删除 List 中的元素会产生两个问题: 删除元素后 List 的元素数量会发生变化; 对 List 进行删除操作可能会产生并发问题; 我们通过代码示例演示正确的删除逻辑 执行 remove11 方法,出现如下...

qq948939246
2018/03/27
0
0
Java ConcurrentModificationException 异常分析与解决方案

一、单线程 1. 异常情况举例 只要抛出出现异常,可以肯定的是代码一定有错误的地方。先来看看都有哪些情况会出现ConcurrentModificationException异常,下面以ArrayList remove 操作进行举例...

LIU-X1001
2016/05/31
28
0
Java 基础(二)集合源码解析 Iterator

首先,在探索集合之前,我们先来思考一个问题,集合是什么? 针对一个特定的问题,如果事先不知道需要多少个对象,或者它们的持续时间有多长,那么也不知道如何保存那些对象。既然如此,怎样...

diamond_lin
2017/09/24
0
0
spring boot redis (三,终极整合)

上一章介绍了一些基本的配置和测试,这一章就开始实际操作了。 开始前的纠结 在想缓存到底放在哪一层,之前测试的时候是放在controller上面的,但是根据自己的代码来看 有些是返回model或者M...

搁浅的双鱼
2017/12/26
0
0
C#中数组、ArrayList和List三者的区别

[引用BobWei的blog:https://www.cnblogs.com/BObwei/p/4869157.html] 在C#中,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。 数组 数组在C#中是最早出现的。它在内存...

fsspring
2018/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
2
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
1
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
3
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
2
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部