以下是我的计划。
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
打印此结果后,程序不会终止。你能解释一下发生了什么吗?
答案 0 :(得分:2)
literate2.hasNext()
始终返回true
。所以while
循环永远不会结束。
答案 1 :(得分:2)
请检查以下代码。它会起作用。
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()
。它实际上一直都是真的。出于这个原因,它创造了一个无限循环。
答案 2 :(得分:1)
while (literate2.hasNext()){
}
无限循环就在那里。在调用next()之前,如果有更多项,hasNext()将始终返回true。