热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->java 
站内搜索:
一边遍历ArrayList一边删除当前元素引发的异常
作者:kgo_yoi 来源:bbs 整理日期:2007-10-30

一边遍历ArrayList一边删除当前元素会引发java.util.ConcurrentModificationException

即“要确保遍历过程顺利完成,必须保证遍历过程中不更改集合的内容(Iterator的remove()方法除外),因此,确保遍历可靠的原则是只在一个线程中使用这个集合,或者在多线程中对遍历代码进行同步。”
参考文章:http://gceclub.sun.com.cn/yuanchuang/week-14/iterator.html

import java.util.ArrayList;public class RetrieveAndRemove {        public static void main(String[] args){                ArrayList<Integer> list = new ArrayList<Integer>();                list.add(1);                list.add(2);                list.add(3);                                for(Integer i : list)                        list.remove(i);                               // Exception in thread "main" java.util.ConcurrentModificationException                }    }

解决方法1:
使用java.util.Iterator
for(Iterator it = list.iterator(); it.hasNext();){        Integer i = (Integer)it.next();        it.remove();}

解决方法2:
java.util.concurrent包中的集合类

相关文章