黑马程序员技术交流社区
标题:
迭代器怎么会出现这种错误呢
[打印本页]
作者:
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