黑马程序员技术交流社区

标题: JAVA中迭代器Iterator的问题 [打印本页]

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


作者: 代文娟    时间: 2013-12-17 08:59
当你第一遍迭代完了后,while(iteratorSub.hasNext())应该为false,当你在进行下一次循环时, while(iteratorSub.hasNext()){
        System.out.println("遍历第二次。");
    }
一判断while循环中的语句为false,当然就不运行下面的语句了
作者: 张天军    时间: 2013-12-17 09:06
迭代器顾名思义,只能迭代一次,如果可以迭代第二次的话就不加迭代器了,也失去了迭代器的意义;

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

希望可以帮助到楼主
作者: jing迪    时间: 2013-12-17 09:13
代文娟 发表于 2013-12-17 08:59
当你第一遍迭代完了后,while(iteratorSub.hasNext())应该为false,当你在进行下一次循环时, while(iterat ...

那意思是迭代器迭代到最后一个元素就作废了没用了???
作者: 恨死我了    时间: 2013-12-17 09:14
hasNext()以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true. )
迭代器的指针指到最后一位,while里的条件返回的结果就是false了.




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