gpt4 book ai didi

Java iterator.hasNext() 始终为真

转载 作者:搜寻专家 更新时间:2023-11-01 01:04:49 24 4
gpt4 key购买 nike

我的代码有点问题,如下所示。 iterator().hasNext() 永远不会变为 false,因为 next() 函数总是返回相同的元素。它以无限循环结束。

我想在集合中的每个元素中设置属性 UserLock(从 GetElements() 返回)。如果元素的类型是“Package”,我将通过递归调用 lockAllElements 函数锁定包下的所有元素。

private void lockAllElements(String internalGUID) {
Element tempElem = null;

while((repo.GetPackageByGuid(internalGUID).GetElements().iterator().hasNext()) == true) {
tempElem = repo.GetPackageByGuid(internalGUID).GetElements().iterator().next();

if(tempElem.GetType().equals("Package")) {
this.lockAllElements(tempElem.GetElementGUID());
}

tempElem.ApplyUserLock();
}
}

最佳答案

它总是正确的,因为您在循环的每次迭代中都会得到一个新的 Iterator 实例。您应该获得一个 Iterator 实例并在整个循环中使用该实例。

改变

while((repo.GetPackageByGuid(internalGUID).GetElements().iterator().hasNext()) == true) {
tempElem = repo.GetPackageByGuid(internalGUID).GetElements().iterator().next();
...

Iterator<Element> iter = repo.GetPackageByGuid(internalGUID).GetElements().iterator();
while(iter.hasNext()) {
tempElem = iter.next();
...

关于Java iterator.hasNext() 始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472568/

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