次の問題があります。「if」の最初の部分でイテレータを使用して S の要素を削除しますが、同じイテレータを使用して S からセット S3 全体を削除する方法についての手がかりがありません「それ以外」の部分。何か案は?前もって感謝します!
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);
}
}