黑马程序员技术交流社区

标题: 一个关于迭代器在迭代过程中增删改的操作问题。 [打印本页]

作者: csu050416    时间: 2015-5-5 23:39
标题: 一个关于迭代器在迭代过程中增删改的操作问题。

import java.util.*;
class Test
{
        public static void main(String[] args)
        {
                ArrayList a1 = new ArrayList();

                a1.add("java01");
                a1.add("java02");
                a1.add("java03");
                a1.add("java04");

                ListIterator it = a1.listIterator();
                while(it.hasNext())
                {
                        Object obj = it.next();
                        if(obj.equals("java02"))
                        {
                                //it.add("java09");
                                it.set("java11");
                                it.add("java09");
                        }
                        System.out.println(obj);
                }
                System.out.println(a1);
        }
}
上面代运行可以通过。
但是将红色的代码放开,蓝色的注释掉,就会出现运行异常,为什么不能放到前面添加,然后在对其修改?


QQ五笔截图未命名.jpg (67.29 KB, 下载次数: 31)

QQ五笔截图未命名.jpg

作者: w401634075    时间: 2015-5-6 00:31
在调用一次next后既没有调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用set
作者: w401634075    时间: 2015-5-6 00:34
其实这个set是一个替代,把这个迭代器里面的元素用指定的元素替代,但是当你第一次调用用的时候,迭代器中没有元素,你却调用set去替代。自然就不行了。。。




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