我有以下問題:我在「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