【发布时间】:2012-12-04 23:41:42
【问题描述】:
这段代码正在产生一个无限循环:
for (String element : friendSet) {
resultNum ++;
System.out.println(" Result # " + resultNum + " = " + element);
System.out.print(" friendSet.size() = " + friendSet.size());
}
friendSet.size() = 2923 但结果不断攀升至数万,直到我强制程序停止。例如:
friendSet.size() = 2923 Result # 7652 = Charlie
friendSet.size() = 2923 Result # 7653 = Jamie
friendSet.size() = 2923 Result # 7654 = Smith
发生了什么事?
【问题讨论】:
-
什么是
friendSet? -
让我们猜一下:
friendSet是您对Iterable的实现,而您的#iterator()方法返回的迭代器已损坏。 -
您能否发布代码,让我们在我们的计算机上重现您的问题? (很有可能在创建该代码时您会自己解决问题:)
-
作为测试,使用传统的
for循环等效项,它的行为方式应该相同:for (Iterator<String> i = friendSet.iterator(); i.hasNext(); ) { String element = i.next(); . . . } -
你为什么不制作一组三个元素,看看打印了什么。无论如何,如果您想要一个真正的答案,请创建一个 SSCCE。
标签: java loops for-loop foreach