Java 嵌套的foreach循环
因此,我创建了这个嵌套的foreach循环,希望将Java 嵌套的foreach循环,java,foreach,Java,Foreach,因此,我创建了这个嵌套的foreach循环,希望将树(GitItems的树集)中的第一项添加到相关(其大小等于树)中的第一条注释中,依此类推(在本例中,我有两条注释和两项)。但它现在做的是,它只将树中的第二项添加到两条注释中的每一条。我做错了什么?您的内部循环始终在树中的所有项上迭代,因此对于所有注释,正文都设置为最后一个树项。如果我没弄错的话,你想要的是同步步进迭代器(在伪代码中,因为我不知道你的相关的和树等是什么: for (Comment mc : relevant) { for
树
(GitItems的树集)中的第一项添加到相关
(其大小等于树
)中的第一条注释中,依此类推(在本例中,我有两条注释和两项)。但它现在做的是,它只将树中的第二项添加到两条注释中的每一条。我做错了什么?您的内部循环始终在树中的所有项上迭代,因此对于所有注释,正文都设置为最后一个树项。如果我没弄错的话,你想要的是同步步进迭代器(在伪代码中,因为我不知道你的相关的和树等是什么:
for (Comment mc : relevant) {
for (GitItem gi : tree) {
bb.buildBody(gi.getHash(), mc.getBody());
MutableComment mutable = commentManager.getMutableComment(mc.getId());
mutable.setBody(bb.sb.toString());
commentManager.update(mutable, true);
}
}
Iterator commentIter=relevant.Iterator();
迭代器iter=tree.Iterator();
while(commentIter.hasNext()&&itemIter.hasNext()){
Comment mc=commentIter.next();
GitItem gi=itemIter.next();
buildBody(gi.getHash(),mc.getBody());
MutableComment mutable=commentManager.getMutableComment(mc.getId());
易变体(bb.sb.toString());
commentManager.update(可变,true);
}
似乎有点太本地化了。你应该初始化bb
内部循环。相同的引用正在更新。目前,你将尝试用每个注释更新每个GitItem
…以及Amit的观点。如果相关的和树可以通过索引访问,那么看看Duncan Jones的sol它本质上是一样的,但是使用了索引。这样可读性更好。它将树中的第一项添加到两个注释中。要么我今天是盲的,要么迭代器循环是正确的,并且应该正确地迭代树。你确定代码的其他部分正确吗?这就是我现在正在测试的,我找不到任何错误或者在你的代码中,但从我所看到的,这应该是正确的答案。这解决了它,问题出在我身上。谢谢你的答案!
Iterator<Comment> commentIter = relevant.iterator();
Iterator<GitItem> itemIter = tree.iterator();
while (commentIter.hasNext() && itemIter.hasNext()) {
Comment mc = commentIter.next();
GitItem gi = itemIter.next();
bb.buildBody(gi.getHash(), mc.getBody());
MutableComment mutable = commentManager.getMutableComment(mc.getId());
mutable.setBody(bb.sb.toString());
commentManager.update(mutable, true);
}