2016-12-20 7 views
0

Set<Commentaries>からコメントを削除する必要があります。そしてそれは働いた!しかし、以下のコードで試してみます。うまくいきません。私は セットからオブジェクトを削除できません

public void removeCommentaries(Commentaries commentToDelete, Contractors contractorWithID) { 
    contractorWithID.getCommentarieses().remove(commentToDelete); 
    contractorsService.update(contractorWithID); 
} 

削除

ためMyComparator

@RequestMapping("/user/editPage/{idContractor}") 
public String goToEditPage(@PathVariable("idContractor") Integer idContractor, Model model) { 

..... 

Set<Commentaries> comSet = contractorsWithId.getCommentarieses(); 
TreeSet<Commentaries> treeComment = new TreeSet<Commentaries>(new MyComparator()); 
treeComment.addAll(comSet); 
contractorsWithId.setCommentarieses(treeComment); 

return "user/editPage"; 
} 

//私の方法の下でTreeSetを使用して、私のSetを命じた後 私を助けてください!私はstackoverflowに新しいと何かあなたが私の質問を編集することができます理解していない!

+0

エラーとは何ですか? – gipsy

+0

エラーとは何ですか?また、どのセットで削除を呼び出そうとしていますか? 'comSet'か' treeComment'ですか?問題を再現できるように、最小限で完全で検証可能な例を作成する必要があります。 – marstran

+0

このコードは何も削除しません。あなたはセットのタイプを変更するだけです。 "働いてください"というコードを投稿してください。 – Ilya

答えて

0

私は簡単な例を作成しましたが、動作します。 、私を修正してください:あなたのコンパレータは、正しい結果が得られることを確認してくださいTreeSetのでの作業中に

public class Main 
{ 
    static Contractors con = new Contractors(); 

    static Commentaries com = new Commentaries("TROL"); 

    static 
    { 
     con.getCommentarieses().add(new Commentaries("1A")); 
     con.getCommentarieses().add(new Commentaries("2B")); 
     con.getCommentarieses().add(com); 
     con.getCommentarieses().add(new Commentaries("3C")); 
    } 

    public static void main(String[] args) 
    { 
     Set<Commentaries> comSet = con.getCommentarieses(); 
     TreeSet<Commentaries> treeComment = new TreeSet<>((a1, a2) -> {return a1.name.compareTo(a2.name);}); 
     treeComment.addAll(comSet); 
     con.setCommentarieses(treeComment); 

     removeCommentaries(com, con); 

     System.out.println(con); 
    } 

    public static void removeCommentaries(Commentaries commentToDelete, Contractors contractorWithID) 
    { 
     contractorWithID.getCommentarieses().remove(commentToDelete); 
    } 
} 

オブジェクトが期待

0
  • のように削除されます。
  • MyComparatorあなたのケースでは、どのフィールドが重要かを比較します。
  • コンパレータが0を返した場合、実行中にtreesetに追加されない2つのコメントが同じであることを意味します。treeComment.addAll(comSet);
  • コメントはツリーセットに追加されません。
  • すべてのコレクションで、削除時にリターンフラグが返されますが、これを確認してください。 falseの場合は、コメントがツリーセットに存在しないことを意味します。

特定のコードの問題が役立ちます。

関連する問題