下面是我的程序。
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。