我的代码有一点问题,如下所示。这iterator().hasNext()
永远不会变成假,因为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
实例并在整个循环中使用该实例。
Change
while((repo.GetPackageByGuid(internalGUID).GetElements().iterator().hasNext()) == true) {
tempElem = repo.GetPackageByGuid(internalGUID).GetElements().iterator().next();
...
to
Iterator<Element> iter = repo.GetPackageByGuid(internalGUID).GetElements().iterator();
while(iter.hasNext()) {
tempElem = iter.next();
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)