问题复现: List<String> list = new ArrayList<>();list.add("11");list.add("55");list.add("sw");list.add("33");list.add("2sw");System.out.println(list.size()+":"+list);for (String s:list){ i…
在java语言中,ArrayList是一个很常用的类,在编程中经常要对ArrayList进行删除操作,在使用remove方法对ArrayList进行删除操作时,报java.util.ConcurrentModificationException异常,下面探讨一下该异常的原因以及解决办法.   1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class Test { 5 6 public static void m…
环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常,本文就以ArrayList为例去理解和解决这种异常. 一.单线程情况下问题分析及解决方案 1.1 问题复现 先上一段抛异常的代码. public void test1() { ArrayList<Integer> arrayList = new ArrayList<>(); for (…
Java在操作ArrayList.HashMap.TreeMap等容器类时,遇到了java.util.ConcurrentModificationException异常.以ArrayList为例,如下面的代码片段: import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class T…
近期在修程序的bug,发现后台抛出下面异常: Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828) at com.keyman.demo.test.ClearResult…
  java.util.ConcurrentModificationException对于这个异常我们一般会认为是在遍历list的时候对这个list做了add,remove等修改操作造成的,最近在线上日志偶尔发现了这个异常,完整异常如下: java.util.ConcurrentModificationException: null at java.util.ArrayList.sort(ArrayList.java:1462) at java.util.Collections.sort(Col…
ConcurrentModificationException 异常:并发修改异常,当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.一个线程对collection集合迭代,另一个线程对Collection进行修改的时候, 就会出现上面的异常. 下面看一下代码: package cn.itcast.p4.list.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; pub…
代码: 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…
写代码遇到这个问题,很多博客文章都是在反复的强调理论,而没有对应的实例,所以这里从实例出发,后研究理论: 一.错误产生情况 1 .字符型 (1)添加 public static void main(String[] args) { List<String> stringList = new ArrayList<String>(); stringList.add("张三毛"); stringList.add("李四"); stringList.…
不要在 foreach 循环里进行元素的 remove/add 操作.remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁. 注意: 1.foreach遍历集合,实际上内部使用的是iterator. 2.代码先判断是否hasNext,然后再去调用next,这两个函数是引起问题的关键. 3.这里的remove还是list的remove方法. 详情请参考https://www.cnblogs.com/luyu1993/p/7148765.html…