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

treeしたがって、 (GitItems の TreeSet である) からの最初の項目を (relevantサイズが のサイズに等しいコメントのリストであるtree)からの最初のコメントに追加することを期待して、このネストされた foreach ループを作成しました。など (この例では、2 つのコメントと 2 つのアイテムがあります)。しかし、現在行っていることは、ツリーの 2 番目の項目のみを 2 つのコメントのそれぞれに追加することです。私は何を間違っていますか?

4

1 に答える 1

0

内部ループはツリー内のすべてのアイテムを常に反復するため、本文はすべてのコメントの最後のツリー アイテムに設定されます。relevant私があなたを正しく理解していれば、あなたが望むのは、イテレータを同期してステップ実行することです(疑似コードで、あなたのand treeetc が何であるかわからないため:

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 に答える