文档章节

删除对象的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
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
Java 学习(18)--列表(List)/ 集合 (Set)/ 泛型 / Map

List 列表 (1) List 是 Collection 的子接口 特点:有序 (存储顺序和取出顺序一致 ),可重复。 (2) List 的特有功能: A:添加功能 void add(int index,Object element) :在指定位置添加元素B...

姜白告
07/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript实现在线Markdown编辑器、转换HTML工具-toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
31分钟前
1
0
Source Tree 在git 密码更新后,无法拉取代码的解决办法

背景: git 密码总是需要修改。在修改代码后,拉去代码, source tree 总提示access denied. 解决方法:重新修改git 仓库对应的密码。 for mac:应用程序 -》 钥匙串 -》 搜索 source tre...

Carlyle_Lee
35分钟前
1
0
OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
今天
72
2
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
4
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部