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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jing迪 高级黑马   /  2013-12-17 08:47  /  875 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Iterator iteratorSub = collection.iterator();
    while(iteratorSub.hasNext()){
        System.out.println("遍历第一次。");
    }
     while(iteratorSub.hasNext()){
        System.out.println("遍历第二次。");
    }
"遍历第二次"语句在控制台是打印不出来的,是不是因为迭代器的一个实例只能循环遍历一次呢?以前没遇到过这种情况,知道的朋友麻烦告诉小弟为什么只能迭代一次?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

倒序浏览
当你第一遍迭代完了后,while(iteratorSub.hasNext())应该为false,当你在进行下一次循环时, while(iteratorSub.hasNext()){
        System.out.println("遍历第二次。");
    }
一判断while循环中的语句为false,当然就不运行下面的语句了
回复 使用道具 举报
迭代器顾名思义,只能迭代一次,如果可以迭代第二次的话就不加迭代器了,也失去了迭代器的意义;

如果想继续迭代,那么必须重新创建个迭代器,继续用iterator()方法;

希望可以帮助到楼主

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
代文娟 发表于 2013-12-17 08:59
当你第一遍迭代完了后,while(iteratorSub.hasNext())应该为false,当你在进行下一次循环时, while(iterat ...

那意思是迭代器迭代到最后一个元素就作废了没用了???
回复 使用道具 举报
hasNext()以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true. )
迭代器的指针指到最后一位,while里的条件返回的结果就是false了.

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马