2016-12-20 3 views
0

Je dois supprimer un commentaire d'un Set<Commentaries>. Et ça a marché! Mais j'essaie avec le code ci-dessous, ça ne marche pas. Après avoir commandé mon Set en utilisant un TreeSet avec MyComparatorImpossible de supprimer un objet d'un ensemble

@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"; 
} 

// Voici ma méthode pour suppression

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

Aide-moi s'il vous plaît! Je suis nouveau à stackoverflow et si quelque chose que vous ne comprenez pas je peux éditer ma question!

+0

Quelle est l'erreur? – gipsy

+0

Quelle est l'erreur, et sur quel ensemble essayez-vous d'appeler supprimer? 'comSet' ou' treeComment'? Vous devriez créer un exemple minimal, complet et vérifiable, afin que nous puissions reproduire le problème. – marstran

+0

Ce code ne supprime rien. Vous venez de changer le type de set. S'il vous plaît, code postal qui "a fonctionné". – Ilya

Répondre

0

J'ai créé un exemple simple, mais cela fonctionne. S'il vous plaît, corrigez-moi:

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

objet est retiré comme prévu

0
  • tout en travaillant avec TreeSet assurez-vous que votre donne un résultat Comparator correct.
  • Dans votre cas, MyComparator en comparant sur quel champ est important.
  • Si le retour de 0 signifie deux Comparator commentaires sont les mêmes qui ne seront pas ajoutés à TreeSet tout en faisant treeComment.addAll(comSet);
  • Si un commentaire ajouté à ne pas se TreeSet qui vous ne pouvez pas dire enlever.
  • bien que toutes les collections vous donne l'indicateur de retour sur supprimer vérifier cela. Si c'est faux signifie que le commentaire n'était pas présent dans treeset.

Le problème avec le code spécifique aidera.