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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯丛政 中级黑马   /  2013-2-5 22:14  /  1558 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                Collection c = new ArrayList();
                c.add("nakeno");
                c.add("nake");
                c.add("no");
               
                Iterator it = c.iterator();
                c.add("na");   // 为什么在这儿给集合添加元素会抛异常呢?
                while(it.hasNext()){
               System.out.println(it.next());

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 要认真看视频

查看全部评分

2 个回复

倒序浏览
视频上有讲啊 ,抛出ConcurrentModificationException异常  当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
某个线程在 Collection 上进行迭代时,通常不允许另一个线性修改该 Collection。通常在这些情况下,迭代的结果是不确定的。
如果检测到这种行为,一些迭代器实现可能选择抛出此异常。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
Iterator();//当对象的引用存在集合时(集合中存的是对象的引用),用迭代方法的时候把对象的引用又传到迭代,这时有两个引用指向对象,这时不能操作对象只能用其一个方法(要么用迭代,要么集合的操作),否则会抛出:ConcurrentModificationException当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
       
所以,在迭代器时,只能用迭代器操作元素,可是Iterator方法是有限的,
只能对元素进行判断,取出,删除的操作,
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马