为什么永远使用list迭代器循环?

时间:2015-01-28 16:07:12

标签: java list loops collections iterator

在我的代码中,我有以下情况:

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
....
....
....

它仍然会继续进入无限循环。

为什么呢?我错过了什么?我该如何解决这个问题?

4 个答案:

答案 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");