我有以下问题:我确实在“if”的第一部分使用迭代器来删除 S 的一个元素,但我不知道如何在“其他”部分。有任何想法吗?先感谢您!
public void f(RewritingNode x, Set<RewritingNode>S0){
Set<RewritingNode> S1 = new HashSet<RewritingNode>();
Set<RewritingNode> S3 = new HashSet<RewritingNode>();
S1.addAll(x.children);
S0.addAll(S1);
Set<RewritingNode> S = new HashSet<RewritingNode>();
S.addAll(S1);
while (!S.isEmpty()){
for (Iterator<RewritingNode> iter_y= S.iterator(); iter_y.hasNext();) {
RewritingNode y = iter_y.next();
RewritingNode y = iter_y.next();
if(S0.containsAll(y.parents)||y.parents.isEmpty()){
iter_y.remove();
}
else {
S3.add(y);
S.addAll(S1);
S.removeAll(S3);
}
}
}
Set<RewritingNode> removedChildren = new HashSet<RewritingNode>();
removedChildren.addAll(S1);
removedChildren.removeAll(S3);
for(RewritingNode x1 :removedChildren){
x1.parents.removeAll(x1.parents);
f(x1,S0);
}
}