黑马程序员技术交流社区

标题: 迭代器怎么会出现这种错误呢 [打印本页]

作者: 337091921    时间: 2013-5-17 03:14
标题: 迭代器怎么会出现这种错误呢
本帖最后由 337091921 于 2013-5-18 23:13 编辑

import java.util.ArrayList;
import java.util.List;

class Java1{
        
        
        public static void main(String[] args) {
                List li=new ArrayList();
        li.add("黑马");
        
        li.add("白马");
        
        li.add("红马");
        
        /*这样可以全部输出,下面为什么不可以啊
         * Iterator it= li.iterator();
        while (it.hasNext()){
        System.out.println(it.next());*/
        //和上面方法,一个思路 啊,但是运行出错啊,无限输出黑马
        while(li.iterator().hasNext()){
               
                System.out.println(li.iterator().next());
               
               
        }
               
               
        }
        
        
        
        
        }
        

作者: 石贤芝    时间: 2013-5-17 04:28
本帖最后由 石贤芝 于 2013-5-17 04:29 编辑

对于
        Iterator it= li.iterator();
        while (it.hasNext()){
        System.out.println(it.next());
函数 iterator() 只执行了一次,所以可以迭代下去。

而对于
     while(li.iterator().hasNext()){
                System.out.println(li.iterator().next());                                
        }
每循环一次,函数 iterator() 就会执行一次,iterator() 函数执行一次就要从头开始迭代;
这样每次迭代都是从“黑马”开始,“白马”没有机会被迭代到,程序会无限输出“黑马”。

希望可以明白。

作者: 王溢君    时间: 2013-5-18 00:49
不是一个迭代器了。。。。。。一次一个新的。




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