首先大家先看一段代码: 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); } } 上面两种遍历方法都会出错, 第一种循环…
摘要 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素. 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 foreach循环 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素. Java语言从JDK 1.5.0开始引入foreach循环.在遍历数组.集合方面,foreach为开发人员提…
1:遍历List 同时 remove 元素,出现java.util.ConcurrentModificationException错误 @Test public void test3(){ List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); for (String temp :list) { // 为什么会出错啊? if("2"…
用iterator遍历集合时要注意的地方:不可以对iterator相关的地方做添加或删除操作.否则会报java.util.ConcurrentModificationException 例如如下代码: ArrayList<String> test = new ArrayList<String>(); test.add("1"); test.add("11"); test.add("111"); test.add("…
今天在对一个Hashtable对象进行 搜索 -> 删除 操作时遇到的一个问题,开始的使用我使用的是Hashtable的Iterator,然后直接执行: Hashtable.remove(key); 抛出异常  java.util.ConcurrentModificationException 查了一下java api doc,相关介绍如下: 由迭代器返回的 Iterator 和由所有 Hashtable 的“collection 视图方法”返回的 Collection 的 listIterat…
java.util.ConcurrentModificationException 异常问题详解 环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常,本文就以ArrayList为例去理解和解决这种异常. 一.单线程情况下问题分析及解决方案 1.1 问题复现 先上一段抛异常的代码. 1 public void test1() { 2 ArrayList…
1.写出下面的输出结果 public class test{ public static void main(String [] args) List<String> list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { list.add(String.valueOf(i)); } for(String s : list){ if(s.equals("3")){ list.remove…
代码按照网上修改为类似,还不能解决问题 for (Iterator<String> it = target.keySet().iterator(); it.hasNext(); ) { if(...) it.remove(); } ,后来根据异常名称,推测是在Servlet多线程环境下保持,换成并发ConcurrentHashMap就解决问题了. 参考: HashMap报错:java.util.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…