Java iterator.hasNext()始终为true

时间:2015-09-09 06:42:35

标签: java while-loop iterator

我的代码有点问题,如下所示。 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(); 
    }
}

1 个答案:

答案 0 :(得分:1)

继续@Eran的回答......我有时更喜欢for循环:

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