A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王冰 中级黑马   /  2012-7-6 22:52  /  1656 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王冰 于 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;
}




1 个回复

倒序浏览
在用迭代器遍历集合的时候
不能添加或删除集合中的元素
这样迭代器会可能找不到下一个元素
抛ConcurrentModificationException

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

点评

哦,是这样啊,谢谢  发表于 2012-7-7 02:54
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马