在我的代码中,我有以下情况:
List cedolini = (List) Bean_Dati.getListaRisultati("ListaCertificazioni");
for (Iterator iterator = cedolini.iterator(); iterator.hasNext(); ) {
System.out.println("TEST");
}
目前,名为 cedolini 的List仅包含一个名为 Certificazioni 的类的实例的元素,我使用调试器看到它。
问题在于,当执行上一个代码时,它进入一个无限循环,我没有在stacktrace中打印出一个 TEST ,但是类似的东西:
TEST
TEST
TEST
TEST
TEST
TEST
....
....
....
它仍然会继续进入无限循环。
为什么呢?我错过了什么?我该如何解决这个问题?
答案 0 :(得分:7)
因为您从不致电iterator.next()
,所以iterator.hasNext()
永远都是真的。
答案 1 :(得分:0)
你没有从迭代器中提取下一个元素。在你的循环中你应该调用
iterator.next()
如果您查看for
循环,
for (Iterator iterator = cedolini.iterator(); iterator.hasNext(); ) {
如果您没有从迭代器中获取下一个元素,那么布尔条件iterator.hasNext()
将始终为真,这将导致您的无限循环。
答案 2 :(得分:0)
在你的循环中调用它
iterator.next();
答案 3 :(得分:0)
这是因为您没有更新迭代器中的下一个元素的迭代器。
就像你一样(假设有一个名为 list 的数组):
for (int i = 0; i < list.length; )
System.out.println("TEST");
并且您不会更新我:i++
。
您应该更改添加iterator.next()
的循环:
for (Iterator iterator = cedolini.iterator(); iterator.hasNext(); iterator.next())
System.out.println("TEST");