gpt4 book ai didi

java - iterator.hasNext() 返回错误值

转载 作者:行者123 更新时间:2023-12-02 00:02:05 25 4
gpt4 key购买 nike

我正在尝试在递归方法中使用迭代器。如果列表中没有下一个元素,则应退出该方法。但是,如果光标位于最后一个位置,则使用 iterator.hasNext() 检查返回 true,我除外 false

有什么想法和提示吗?

我不会发布图片,所以我会把它写下来。这就是我在 Eclipse-Debugger-View 中看到的内容:

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);
}
}

最佳答案

我认为问题在于逻辑本身,正如您所写,您使用以下方式调用该函数:

Iterator<ContextResolveHelper> iterator = resolverList.iterator();    
resolveWithIterator(searchCtxResult, iterator, resolverList);

但是,在方法本身中,您做了两件事,接下来检查新的迭代器,而不是提供的迭代器

boolean end = resolverList.iterator().hasNext();

当至少有一个元素时,它将始终返回 true。

调用 iterator() 总是返回新的迭代器,您可能应该使用参数中提供的迭代器。

关于java - iterator.hasNext() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com