Java 为什么这两个列表迭代器的行为不同?

Java 为什么这两个列表迭代器的行为不同?,java,list,iteration,Java,List,Iteration,我在练习列表迭代,然后我被卡住了。我的问题是,为什么这两种方法给出不同的结果 第一个代码打印出一个无限循环。而第二个则打印出索引中的下一个字符串 我是java新手,这也是我的第一语言 public static void main(String[] args) { String[] hi = {"yo", "wat", "sup"}; List<String> l1 = new ArrayList(Arrays.asList(hi)); while (l

我在练习列表迭代,然后我被卡住了。我的问题是,为什么这两种方法给出不同的结果

第一个代码打印出一个无限循环。而第二个则打印出索引中的下一个字符串

我是java新手,这也是我的第一语言

public static void main(String[] args) {


    String[] hi = {"yo", "wat", "sup"};
    List<String> l1 = new ArrayList(Arrays.asList(hi));

    while (l1.iterator().hasNext()) {


        System.out.println(l1.iterator().next());
        ;
    }
   }
publicstaticvoidmain(字符串[]args){
字符串[]hi={“yo”、“wat”、“sup”};
列表l1=新的ArrayList(Arrays.asList(hi));
while(l1.iterator().hasNext()){
System.out.println(l1.iterator().next());
;
}
}
VS
publicstaticvoidmain(字符串[]args){
字符串[]hi={“yo”、“wat”、“sup”};
列表l1=新的ArrayList(Arrays.asList(hi));
迭代器=l1.Iterator();
while(rator.hasNext()){
System.out.println(rator.next());
}
}

l1.迭代器(
总是生成一个新的迭代器。在第一段代码中,您创建一个新的迭代器,丢弃它,重新创建它,然后再次丢弃它。由于迭代器没有机会到达终点,您将永远不会退出循环。

在第一种情况下,您创建一个新的
迭代器
(一次又一次地从第一个元素开始)每次检查循环中的条件。然后在
println
中创建更多的条件(每个循环创建两个迭代器)。程序无休止地显示第一个元素(
“yo”
)。

基本上如此。每次执行while方法时迭代器都是一个新的迭代器?
public static void main(String[] args) {


    String[] hi = {"yo", "wat", "sup"};
    List<String> l1 = new ArrayList(Arrays.asList(hi));

    Iterator<String> rator = l1.iterator();

    while (rator.hasNext()) {
      System.out.println(rator.next());
    }
}