-1
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);
    }
}

所以我做了这个嵌套的 foreach 循环,希望我将第一个项目从tree(它是 GitItems 的 TreeSet)添加到第一个评论relevant(这是一个大小等于大小的评论列表tree)依此类推(在此示例中,我有 2 个评论和 2 个项目)。但它现在所做的是,它只将树中的第二个项目添加到两个评论中的每一个。我究竟做错了什么?

4

1 回答 1

0

您的内部循环始终遍历树中的所有项目,因此主体设置为所有评论的最后一个树项目。如果我理解正确,那么您想要的是同步迭代迭代器(在伪代码中,因为我不知道您的relevanttree是什么:

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);
}
于 2013-07-15T12:48:03.797 回答