Alu*_*ard 4 java iterator while-loop
我对代码有一点问题,如下所示.将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();
}
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 16
它始终是真的,因为您Iterator在循环的每次迭代中都获得了一个新实例.您应该获得单个Iterator实例并在整个循环中使用该实例.
更改
while((repo.GetPackageByGuid(internalGUID).GetElements().iterator().hasNext()) == true) {
tempElem = repo.GetPackageByGuid(internalGUID).GetElements().iterator().next();
...
Run Code Online (Sandbox Code Playgroud)
至
Iterator<Element> iter = repo.GetPackageByGuid(internalGUID).GetElements().iterator();
while(iter.hasNext()) {
tempElem = iter.next();
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |