ConcurrentModificationException】的更多相关文章

今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码:   public class Test {    public static void main(String[] args) {        User user1 = new User();        user1.setId(1);        user1.setName("zhangsan"); Us…
对ArrayList的操作我们可以通过索引象来访问,也可以通过Iterator来访问,只要不对ArrayList结构上进行修改都不会造成ConcurrentModificationException,单独用索引对ArrayList进行修改也不会造成该问题,造成该问题主要是在索引和Iterator混用.可以通过JDK的源码来说明该问题. 首先看下AbstractList的Iterator内的代码: /** *在Iterator的内部有个expectedModCount 变量, *该变量每次初始化*…
ConcurrentModificationException异常处理 ConcurrentModificationException异常是Iterator遍历ArrayList或者HashMap数组时,通过代码修改了数组的大小,而Iterator(Object ele=it.next())会检查数组的size(),当数组的大小变化时,就会产生ConcurrentModificationException异常. for(Integer x : list){ if(x % 2 == 0) list…
key:3-key key:/v1.02-key Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429) at java.util.HashMap$EntryIterator.next(HashMap.java:1463) at java.util.HashMap$EntryIter…
今天在调试程序 遇到了如此问题 贴上代码来看看稍后分析 List<String> list = null;boolean isUpdate = false;try { list = JSON.parse(var.getValue(), ArrayList.class); if(CollectionUtils.isNotEmpty(list)){ for (String workno : list) { if (cmd.getUserId().toString().equals(workno))…
问题: 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现. 使用普通迭代器出现的异常: ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常. 产生的原因: 迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常. 其实这个问题描述的是:普通迭代器遍历元素的时候,…
用iterator遍历集合时要注意的地方:不可以对iterator相关的地方做添加或删除操作.否则会报java.util.ConcurrentModificationException 例如如下代码: ArrayList<String> test = new ArrayList<String>(); test.add("1"); test.add("11"); test.add("111"); test.add("…
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常.下面我们就来讨论以下这个异常出现的原因以及解决办法. 以下是本文目录大纲: 一.ConcurrentModificationException异常出现的原因 二.在单线程环境下的解决办法 三.在多线程环境下的解决方法 若有不…
package com.test.io; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.LinkedList; import com.mysql.jdbc.Buffer; public class ReadKeyFile { public static void…
如题,最近项目里有个模块我做了异步处理方面的事情,在code过程中发现一个颠覆我对synchronized这个关键字和用法的地方,请问各位java开发者们是否对此有一个合理的解释,不多说,我直接贴出问题代码: (事实证明这是一个坑,各位读者,如果有兴趣,可以先不看答案,自己看看能不能发现这个坑) import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.con…
当集合结构被修改,会抛出Concurrent Modification Exception. fail-fast会在以下两种情况下抛出ConcurrentModificationException (1)单线程环境 集合被创建后,在遍历它的过程中修改了结构. 注意 remove()方法会让expectModcount和modcount 相等,所以是不会抛出这个异常. (2)多线程环境 当一个线程在遍历这个集合,而另一个线程对这个集合的结构进行了修改. 如下: private static voi…
在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除. 则使用会报以下异常:Java.util.ConcurrentModificationException        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)        at java.util.HashMap$KeyIterator.next(HashMap.java:828) 例如以…
在运行以下代码时,会报java.util.ConcurrentModificationException异常, public class Demo { public static void main(String[] args) { List list = new LinkedList(); list.add("1"); list.add("#"); list.add("2"); list.add("#"); list.add…
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常.下面我们就来讨论以下这个异常出现的原因以及解决办法. 以下是本文目录大纲: 一.ConcurrentModificationException异常出现的原因 二.在单线程环境下的解决办法 三.在多线程环境下的解决方法 若有不…
今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码:   public class Test {    public static void main(String[] args) {        User user1 = new User();        user1.setId(1);        user1.setName("zhangsan"); Us…
ConcurrentModificationException 异常:并发修改异常,当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.一个线程对collection集合迭代,另一个线程对Collection进行修改的时候, 就会出现上面的异常. 下面看一下代码: package cn.itcast.p4.list.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; pub…
遍历并remove HashMap中的元素时,遇到ConcurrentModificationException for (Map.Entry<ImageView, UserConcise> peer : mPortraitViewPeers.entrySet()) {    ImageView key = peer.getKey(); key.setImageBitmap(peer.getValue().getProfile_image()); mPortraitViewPeers.remo…
首先大家先看一段代码: public static void main(String[] args) { List<String> listStr = new ArrayList<String>();      listStr.add("1");      listStr.add("2");      listStr.add("3");      listStr.add("4");      listS…
再次踩bug:遍历删除list(java.util.ConcurrentModificationException) 使用 List<Long> list = new ArrayList<Long>(); for(Long l : list){ if(l == 5){ list.remove(l); } } for(int i=0; i<list.size(); i++){ if(l == 5){ list.remove(l); } } 上面两种遍历方法都会出错, 第一种循环…
现在有一个需求,要遍历一个List,假设List里面存储的是String对象,然后该需求事判断里面如果有某个对象,则添加一个新的对象进去.自然,我们得出下面的代码: import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Created by lili on 15/11/13. */ public class Test { public static void main(String[…
原文网址:http://www.2cto.com/kf/201403/286536.html 一.单线程 1. 异常情况举例 只要抛出出现异常,可以肯定的是代码一定有错误的地方.先来看看都有哪些情况会出现ConcurrentModificationException异常,下面以ArrayList remove 操作进行举例: 使用的数据集合: ? 1 2 3 4 5 6 7 List<string> myList = new ArrayList<string>();   myLis…
原文网址:http://blog.sina.com.cn/s/blog_465bcfba01000ds7.html 1月30日java.util.ConcurrentModificationException异常(转)1. 今天在写一个带缓存功能的访问代理程序时出现了java.util.ConcurrentModificationException异常, 因为该异常是非捕获型异常而且很少见,所以费了些时间才找到问题所在,原来在通过Iterator进行遍历的时候,如果直接对HashMap进行操作后…
原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常.下面我们就来讨论以下这个异常出现的原因以及解决办法. 以下是本文目录大纲: 一.ConcurrentModific…
摘要: 为了保证线程安全,在迭代器迭代的过程中,线程是不能对集合本身进行操作(修改,删除,增加)的,否则会抛出ConcurrentModificationException的异常. 示例: public static void main(String[] args) { Collection num = new ArrayList<String>(); num.add("One"); num.add("Two"); num.add("Three…
代码: public static void reduce(HashMap<String, Integer> hashMap, final Integer count) { Iterator<String> iter = hashMap.keySet().iterator(); String key; while(iter.hasNext()) { key = iter.next(); if (!hashMap.get(key).equals(count)) { hashMap.r…
今天在写一个带缓存功能的访问代理程序时出现了java.util.ConcurrentModificationException异常,因为该异常是非捕获型异常而且很少见,所以费了些时间才找到问题所在,原来在通过Iterator进行遍历的时候,如果直接对List进行操作后,再继续用之前的Iterator进行遍历就会出现这个异常,表示其List已经被修改. 源程序代码片段如下:caches为一个List对象 试过:for(int i=0;i<list.size();i++) for-each Iter…
在今天做android当项目,我遇到了这个异常,好吧.其实最不寻常遇到异常IllegalstateException.它们与我们的硬件连接SDK抛出,我想折磨学生阿玉啊.扯远了. 今天,我想回到这个异常.java.util.ConcurrentModificationException异常,一開始我愣了一下.貌似从来没遇到过这个,然后果断百度大神.这才发现: 原因是你遍历该集合时.对该集合进行了删除元素的操作导致的.假设你有删除元素的必要,建议赋值到还有一个集合,然后对他进行删除操作. 偶出现错…
使用迭代器遍历List的时候修改List报ConcurrentModificationException异常原因分析 在使用Iterator来迭代遍历List的时候如果修改该List对象,则会报java.util.ConcurrentModificationException异常,下面看一个例子演示: 1 package com.others; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 import java.u…
先看这样一段代码: List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); for (String temp : list) { if("1".equals(temp)){ list.remove(temp); } } 这是对一个集合进行简单迭代,当集合中的某一个元素与"1"相等则移除该元素,程序运行正常:此时…
转载自:http://www.cnblogs.com/dolphin0520/p/3933551.html 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常.下面我们就来讨论以下这个异常出现的原因以及解决办法. 以下是本文目录大纲: 一.ConcurrentModificationException异常出现的原因 二.在单线程环境下的解决办法 三.在多线程环境下的…