我想在遞歸方法中使用迭代器。如果列表中沒有下一個元素,它應該退出該方法。但是如果光標處於最後位置,與iterator.hasNext()
的檢查返回true
,我除了false
?iterator.hasNext()返回錯誤的值
任何想法和提示?
我不是爲了發佈圖片,所以我會寫下來。這就是我看到在Eclipse的調試器查看:
iterator | AbstractList$Itr (id=448)
- cursor | 2
- excpectedModCount | 2
- lastRet | 1
- this$0 | ArrayList<E> (id=438)
- elemtData | Object[10] (id=462)
---modCount | 2
---size | 2
下面的代碼
static void resolveWithIterator(List<SomethingContext> list, Iterator<ContextResolveHelper> iterator, List<ContextResolveHelper> resolverList)
{
boolean end = resolverList.iterator().hasNext();
if (list.size() == 1 || !end){
resolvedList.add(list);
return;
}else{
ContextResolveHelper acutalEntry = iterator.next();
List<SomethingContext> tempQRes2 = new ArrayList<SomethingContext>();
for (SomethingContext smtCtx : list){
if (//check various things){
tempQRes2.add(smtCtx);
}
}
resolveWithIterator(tempQRes2, iterator, resolverList);
}
}
你可以粘貼暴露你的問題的代碼? – zibi
這聽起來像是你正在解釋實現細節 - 例如字段'cursor'的含義。它是否返回了*明顯不正確的值? –
作爲你傳遞迭代器和resolverList的參數,這是一個通過resolverList的迭代器嗎? – zibi