再次踩bug:遍历删除list(java.util.ConcurrentModificationException)
2014-03-11 11:44
645 查看
再次踩bug:遍历删除list(java.util.ConcurrentModificationException)
使用
上面两种遍历方法都会出错,
第一种循环,增加for循环,当有再次删除时,会出现java.util.ConcurrentModificationException
第二种循环,一边删除size会变小,list的位置也会改变,就算不出错,也会删除错位置(比如你循环到第2个元素的时候你把它删了, 接下来你去访问第3个元素,实际上访问到的是原先的第4个元素。)
后来查询后得知,要使用iterator删除list
方法如下
以前自已写过一个简单的iterator的简单实现,地址在这
使用
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); } }
上面两种遍历方法都会出错,
第一种循环,增加for循环,当有再次删除时,会出现java.util.ConcurrentModificationException
第二种循环,一边删除size会变小,list的位置也会改变,就算不出错,也会删除错位置(比如你循环到第2个元素的时候你把它删了, 接下来你去访问第3个元素,实际上访问到的是原先的第4个元素。)
后来查询后得知,要使用iterator删除list
方法如下
List<Long> list = new ArrayList<Long>(); Iterator<Long> it = list.iterator(); while(it.hasNext){ if(it.next() == 5){ it.remove();//注意此处不能用list.remove(it.next()); } }
以前自已写过一个简单的iterator的简单实现,地址在这
相关文章推荐
- JAVA List 一边遍历一边删除元素,报java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException---用迭代器遍历Map时删除其中元素出现异
- 遍历集合时删除元素,抛出java.util.ConcurrentModificationException的解决办法
- 遍历集合时删除元素,抛出java.util.ConcurrentModificationException的解决办法
- List删除元素报Exception in thread "main" java.util.ConcurrentModificationException异常,或数据删除不完整
- for循环遍历删除报错:java.util.ConcurrentModificationException
- 遍历集合时出现的异常Exception in thread "main" java.util.ConcurrentModificationException
- 遍历Map时抛出java.util.ConcurrentModificationException异常的解决办法
- 使用迭代器遍历集合时,当集合中的数据发生变化是会抛出java.util.ConcurrentModificationException异常
- 关于出现List的java.util.ConcurrentModificationException异常问题的解决
- java 并发操作list集合导致java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException when interation the list then remove
- 遍历容器时出现的java.util.ConcurrentModificationException
- 集合遍历 java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException java list.subList
- java 并发操作list集合导致java.util.ConcurrentModificationException
- 从ArrayList中删除对象报java.util.ConcurrentModificationException异常解决
- JAVA集合中删除元素时的java.util.ConcurrentModificationException
- java set 删除元素 java.util.ConcurrentModificationException
- list执行remove和add方法时,报java.util.ConcurrentModificationException的原因