Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 嵌套的foreach循环_Java_Foreach - Fatal编程技术网

Java 嵌套的foreach循环

Java 嵌套的foreach循环,java,foreach,Java,Foreach,因此,我创建了这个嵌套的foreach循环,希望将树(GitItems的树集)中的第一项添加到相关(其大小等于树)中的第一条注释中,依此类推(在本例中,我有两条注释和两项)。但它现在做的是,它只将树中的第二项添加到两条注释中的每一条。我做错了什么?您的内部循环始终在树中的所有项上迭代,因此对于所有注释,正文都设置为最后一个树项。如果我没弄错的话,你想要的是同步步进迭代器(在伪代码中,因为我不知道你的相关的和树等是什么: for (Comment mc : relevant) { for

因此,我创建了这个嵌套的foreach循环,希望将
(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);
}