黑马程序员技术交流社区

标题: 给集合添加元素抛出异常 [打印本页]

作者: 侯丛政    时间: 2013-2-5 22:14
标题: 给集合添加元素抛出异常
                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());


作者: 刘凯    时间: 2013-2-5 22:25
视频上有讲啊 ,抛出ConcurrentModificationException异常  当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
某个线程在 Collection 上进行迭代时,通常不允许另一个线性修改该 Collection。通常在这些情况下,迭代的结果是不确定的。
如果检测到这种行为,一些迭代器实现可能选择抛出此异常。
作者: 曹睿翔    时间: 2013-2-6 00:09
Iterator();//当对象的引用存在集合时(集合中存的是对象的引用),用迭代方法的时候把对象的引用又传到迭代,这时有两个引用指向对象,这时不能操作对象只能用其一个方法(要么用迭代,要么集合的操作),否则会抛出:ConcurrentModificationException当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
       
所以,在迭代器时,只能用迭代器操作元素,可是Iterator方法是有限的,
只能对元素进行判断,取出,删除的操作,
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。




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