Suz*_*ioc 3 java loops goto continue
我不明白为什么继续导致错误在这里
public void clear() {
log.debug("Clearing hash");
// wow!
while( hash.size()>0 ) {
for(Map.Entry<Node,Node> entry : hash.entrySet()) {
clearingParents: {
while( entry.getKey().ups.size() > 0 ) {
for(Node node : entry.getKey().ups) {
log.debug("Clearing {}, hash size is {}", node, hash.size());
if( node.sizeUps() == 0 ) {
node.clear();
continue clearingParents;
}
else {
log.debug("was skipped since inserted");
}
}
break clearingParents;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用这个方案,因为node.clear()导致迭代器出现故障
你标记一个块而不是while循环.你可以break出去的labeled block,但不是continue在labeled block
它没有任何意义continue a labeled block,因为它是不是一个循环标签你的循环如下图所示
clearingParents: while( entry.getKey().ups.size() > 0 ) {
for(Node node : entry.getKey().ups) {
log.debug("Clearing {}, hash size is {}", node, hash.size());
if( node.sizeUps() == 0 ) {
node.clear();
continue clearingParents;
}
else {
log.debug("was skipped since inserted");
}
}
break clearingParents;
}
Run Code Online (Sandbox Code Playgroud)
在标注研究循环这里