黑马程序员技术交流社区

标题: 集合中并发修改异常问题 [打印本页]

作者: 王冰    时间: 2012-7-6 22:52
标题: 集合中并发修改异常问题
本帖最后由 王冰 于 2012-7-7 02:55 编辑

这段代码中毕老师在视频中说往集合对象中添加元素会发生并发修改异常
  Iterator it = al.iterator();
  while(it.hasNext())
  {
      Object obj = it.next();
      if (obj.equals("java02"))
     {
           //al.add("java008");//会发生并发修改异常:ConcurrentModificationException
     }
  }
这段代码中在集合对象中添加元素没有发生修改异常
public static ArrayList singleElement(ArrayList al)
{
          //定义临时容器
          ArrayList newAl = new ArrayList();
          Iterator it = al.iterator();
          while (it.hasNext())
         {
             Object obj = it.next();
             if (!newAl.contains(obj))
            {
                newAl.add(obj);//这里为什么没有发生,对着不是很了解,想求教下各位
           }
      }
      return newAl;
}





作者: 温少邦    时间: 2012-7-6 23:13
在用迭代器遍历集合的时候
不能添加或删除集合中的元素
这样迭代器会可能找不到下一个元素
抛ConcurrentModificationException

下面的代码新建了一个ArrayList newAl
遍历al的时候将al中的元素添加至newAl中
并没有在遍历al的时候对al进行操作




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2