有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

我是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());
        ;
    }
   }

VS

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());
    }
}

共 (1) 个答案

  1. # 1 楼答案

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