import java.util.*;
public class ListTest{
public static void main(String[] args){
List<String> l = new ArrayList<String>();
l.add("one");
l.add("two");
l.add("three");
while(l.iterator().hasNext()){
System.out.println(l.iterator().next());
}
}
}这样做为什么是死循环呢??

解决方案 »

  1.   

    while的循环条件没写对吧,hasNest()方法是有返回值的,返回值是-1的时候表示不存在下一个元素了。条件写成( i.iterator().hasNext() != -1 )就对了。恩
      

  2.   

    while(l.iterator().hasNext())这里永远是true,所以会是死循环
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test {
        public static void main(String[] args) {
            List<String> l = new ArrayList<String>();
            l.add("one");
            l.add("two");
            l.add("three");        Iterator iter = l.iterator();
            while (iter.hasNext()) {
                System.out.println(iter.next());
            }
        }
    }
      

  3.   


    楼上的大哥能说详细点儿吗?为什么永远是第一个没往下迭代啊?不是有l.iterator().next();吗
    这个问题我始终没搞明白. 
      

  4.   


    List<String> l = new ArrayList<String>();
    l.add("one");
    l.add("two");
    l.add("three");
    Iterator iterator=l.iterator();
    while (iterator.hasNext()) {
    System.out.println(iterator.next());
    }你的循环每次都是重新得到一个迭代器··因为iterator()方法是获取当前可排列容器的迭代器··所以你每次都是死循环··获得迭代器只要调用一次iterator()方法··
      

  5.   

     iterator()返回一个元素按升序进行迭代的迭代器。你的while循环每次都调用iterator()方法,所以每次都返回同一个迭代器,也就是总指向第一个元素
      

  6.   

    l.iterator().hasNext()  没次都回去一个新的迭代器,都是从0开始当然没完没了了。
      

  7.   

    每次都重新调用iterator方法生成一个对象,每次都指向第一个元素,hasNext永远为真