并发修改异常
- 异常类型:ConcurrentModificationException,继承RuntimeException
- 产生原因:迭代器遍历过程中修改了集合元素的个数,导致迭代器预期修改值和实际修改值不一致
ArrayList<String> arr = new ArrayList<String>(); arr.add("纱雾"); Iterator<String> it = arr.iterator(); while(it.hasNext()) { String s = it.next(); System.out.println(s); if(s.equals("纱雾")) { arr.add("刻晴"); } }
- 解决方法:用普通for循环遍历(不能用增强for循环,因为其本质还是迭代器)
ArrayList<String> arr = new ArrayList<String>(); arr.add("纱雾"); for(int i = 0; i < arr.size(); i++) { String s = arr.get(i); System.out.println(s); if(s.equals("纱雾")) { arr.add("刻晴"); } }