我使用以下代码:
boolean continueProcessing = true;
boolean lastRecord = false;
while (continueProcessing) //can it be changed to while (continueProcessing == true), what's the advantage
{
if(refListItemItr.hasNext() || lastRecord)
{
continueProcessing = true;
lastRecord = false;
}
else
{
continueProcessing = false;
}
if(continueProcessing)
{
lSynonymListType = objFactory.createSynonymListType();
}
}
我怀疑存在无限循环的情况。我该如何确认它不会发生。
答案 0 :(得分:2)
这会导致无限循环的原因是你一直在检查下一个项目是否存在,但你实际上从未调用next()来检索它,所以内部指针不会移动而你只是在检查是否列表中有第一项。
无论如何,你过度复杂了。你应该做的只是
while (refListItemItr.hasNext()){
Object item = refListItemItr.next(); // change Object to the item's type
// Presumably actually do something with the item here, which currently you're not...
}
或者,更简单地说
for (Object o : refListItemItr){
// do stuff
}
在回答您的其他问题时,while(continueProcessing)
和while (continueProcessing == true)