我有以下问题:我在“if”的第一部分中使用迭代器来删除S的一个元素,但我没有关于如何使用同一个迭代器从S中删除整个集合S3的线索在“其他”部分。有任何想法吗?先谢谢你!如何在if语句中使用迭代器 - 在java中使用removeAll循环?
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);
}
}
为什么你重复这一行两次? 'RewritingNode y = iter_y.next();'是一个错字吗? – Ali
是的,对不起。这是一个双面复制 - 粘贴。 – eleni
我的anawer有帮助吗?如果确实如此,请接受答案。 – Ali