嵌套列表迭代器。程序不会终止



下面是我的程序。

public class NewClass {
    public static void main(String[] args) {
        List<String> cars = new ArrayList<String>();
        cars.add("Maruti");
        cars.add("Hundai");
        cars.add("Polo");
        Iterator<String> literate1 =  cars.iterator();
        while (literate1.hasNext()){
            System.out.println(literate1.next());
            literate1.remove();
            Iterator<String> literate2 =  cars.iterator();
            while (literate2.hasNext()){
            }
        }
    }
}

输出

Maruti

打印此结果后,程序不会终止。你能解释一下发生了什么吗?

literate2.hasNext()总是返回true 。所以while循环永远不会结束。

请检查

下面的代码。它会起作用。

List<String> cars = new ArrayList<String>();
cars.add("Maruti");
cars.add("Hundai");
cars.add("Polo");
Iterator<String> literate1 =  cars.iterator();
while (literate1.hasNext()) {
    System.out.println(literate1.next());
}

在您的代码中,内部 while 循环具有条件 literate2.hasNext() 。它实际上一直在回归真实。出于这个原因,它正在创建一个无限循环。

while (literate2.hasNext()){
}

无限循环就在那里。 在你调用 next(( 之前,如果有更多的项目,hasNext(( 将始终返回 true。

最新更新