黑马程序员技术交流社区

标题: 为什么把迭代器放在for循环外就可以在for循环内倒着遍历元素 [打印本页]

作者: 追逐    时间: 2014-3-21 11:31
标题: 为什么把迭代器放在for循环外就可以在for循环内倒着遍历元素
class ListDemo
{
        public static void main(String[] args)
        {
                list_1();
        }

        //ListIterator的简单应用
        public static void list_1()
        {
                ArrayList s = new ArrayList();
                s.add("java01");
                s.add("java02");
                s.add("java03");
                ListIterator li = s.listIterator(); //为什么要把它放在循环外才可以在循环内从头往后遍历元素????
                //使用List特有的迭代器ListIterator
                for(; li.hasNext(); )
                {
                        Object obj = li.next(); //子类对象指向父类引用
                        if(obj.equals("java03"))
                        {
                                li.set("java---3"); //对迭代器中的元素进行修改
                                li.add("java-----3"); //对迭代器中的元素进行添加
                        }
                }
                p("从头往后遍历:" + s);

                for(; li.hasPrevious(); )
                {
                        p(li.previous());
                }
                p("从后往头遍历: " + s);
               
        }

        public static void p(Object obj)
        {
                System.out.println(obj);
        }
}

作者: Ranger    时间: 2014-3-21 12:49
因为迭代器的规则,如果放入循环,代表你每一个循环都新建一个迭代器,永远都是从一个集合的元素开始迭代。
作者: 青木郎    时间: 2014-3-21 14:08
放在循环里面也行的,这样:

                for(ListIterator li = s.listIterator(); ; li.hasNext(); )
                {………}
因为for循环中的的第一个位置,只是用来定义并初始化一个变量,以供后面用到,所以定义在外面和里面,没有区别的
作者: 追逐    时间: 2014-3-21 15:58
谢谢大家伙的帮忙。问题解决了




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