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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

本帖最后由 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());
               
               
        }
               
               
        }
        
        
        
        
        }
        

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 石贤芝 于 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() 函数执行一次就要从头开始迭代;
这样每次迭代都是从“黑马”开始,“白马”没有机会被迭代到,程序会无限输出“黑马”。

希望可以明白。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
王溢君 来自手机 中级黑马 2013-5-18 00:49:13
藤椅
不是一个迭代器了。。。。。。一次一个新的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马