IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

remove() objet d'une liste.


Sujet :

Langage Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut remove() objet d'une liste.
    Bonjour je voudrais retirer un objet d'une liste ne se trouvant pas ddans une autre liste.
    Pour exemple, j'ai deux liste de personnes.
    list1 => Francois et Pierre
    list2 => Pierre et Emmanuel
    Je voudrais retirer de ma list2 les éléments n'étant pas dans list1.
    Merci pour votre aide.

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    méthodes remove et contains de List, voir equals de Object. Voir la javadoc.

  3. #3
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Oui et où est le problème ???

  4. #4
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Bonjour,

    Cette méthode devrait t'intéresser :
    retainAll

    bon courage.

  5. #5
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Le problème est que j'aurai une condition du style dans une boucle qui itere sur les 2 listes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(!personne.getName().equals(personne2.getName()))
    remove(personne);
    Donc avec un code comme sa dans ma liste il va en premier comparé Pierre (list2) avec Francois (list1) donc la il va me retiré Pierre, mais Pierre se trouve dans list1, donc il ne faut pas qu'il soit retiré.

  6. #6
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Bonjour,

    Cette méthode devrait t'intéresser :
    retainAll

    bon courage.
    Salut cette méthode est pratique mais dans mon cas, elle n'est pas utile car j'ai un traitement à faire pour mes objets qui ne sont pas des personnes, dans mon programme.
    Merci.

  7. #7
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Citation Envoyé par david06600
    Salut cette méthode est pratique mais dans mon cas, elle n'est pas utile car j'ai un traitement à faire pour mes objets qui ne sont pas des personnes, dans mon programme.
    Merci.
    Je n'ai rien compris...

    Citation Envoyé par david06600
    Je voudrais retirer de ma list2 les éléments n'étant pas dans list1.
    Citation Envoyé par javadoc de retainAll
    In other words, removes from this list all the elements that are not contained in the specified collection

    Désolé, si tu exposes mal ton problème, je ne peux pas t'aider...

  8. #8
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    pour chaque élément de L1, faire :
    Si L2 contient elementDeL1 alors
    L2.remove(elementDeL1);
    finSi
    finPour

    ...
    c'est l'algorithme du siècle ça

  9. #9
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Citation Envoyé par iohack
    pour chaque élément de L1, faire :
    Si L2 contient elementDeL1 alors
    L2.remove(elementDeL1);
    finSi
    finPour

    ...
    c'est l'algorithme du siècle ça
    Si c'est la solution, alors c'est removeAll qu'il faut utiliser...

  10. #10
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut

    Citation:
    david06600 a écrit :
    Salut cette méthode est pratique mais dans mon cas, elle n'est pas utile car j'ai un traitement à faire pour mes objets qui ne sont pas des personnes, dans mon programme.
    Merci.

    Je n'ai rien compris...

    Citation:
    david06600 a écrit :
    Je voudrais retirer de ma list2 les éléments n'étant pas dans list1.

    Citation:
    javadoc de retainAll a écrit :
    In other words, removes from this list all the elements that are not contained in the specified collection

    Désolé, si tu exposes mal ton problème, je ne peux pas t'aider...
    retainAll ne permet pas d'accéder aux objet qui sont retiré, ou je me trompes?

    pour chaque élément de L1, faire :
    Si L2 contient elementDeL1 alors
    L2.remove(elementDeL1);
    finSi
    finPour

    ...
    c'est l'algorithme du siècle ça
    On fait ce qu'on peut dsl.

  11. #11
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Citation Envoyé par david06600
    On fait ce qu'on peut dsl.
    Tu n'as pas à t'excuser, on a tous été débutants un jour...

  12. #12
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Non tu ne te trompes pas.

    Je crois avoir compris.

    Soit liste1 qui contient plein d'objets (de type différents).
    Soit liste2 qui contient d'autres objets.
    Soit liste3 les personnes retirées de liste1

    Il faut retirer de liste1 les personnes qui ne sont pas dans liste2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Iterator iterListe1 = liste1.iterator();
    List liste3 = new LinkedList();
    while (iterListe1.hasNext()) {
       Object current = iterListe1.next();
       if (current instanceof Personne) {
          if (!liste2.contains(current)) {
             liste3.add(current);
             iterListe1.remove();
          }
       }
    }
    J'ai compris ou pas ?

  13. #13
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Et si tu regardais du côté de l'API common collections ?

    http://jakarta.apache.org/commons/co...ocs/index.html

    --->CollectionUtils#subtract

  14. #14
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Citation Envoyé par thibaut
    Et si tu regardais du côté de l'API common collections ?

    http://jakarta.apache.org/commons/co...ocs/index.html

    --->CollectionUtils#subtract
    Apparemment on se mélange les pinceaux...

    Dans le premier post :

    Je voudrais retirer de ma list2 les éléments n'étant pas dans list1.
    Donc le removeAll, substract et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     pour chaque élément de L1, faire :
    Si L2 contient elementDeL1 alors
    L2.remove(elementDeL1);
    finSi
    finPour
     
    ...
    c'est l'algorithme du siècle ça
    ne résolvent pas vraiment le problème.

  15. #15
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Dans ce cas et toujours dans la même api, regarde:

    ---> Collections#retainAll

  16. #16
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Citation Envoyé par thibaut
    Dans ce cas et toujours dans la même api, regarde:

    ---> Collections#retainAll
    Ben oui, je l'ai déjà dit, mais apparemment ça ne convient pas .
    On n'est pas sorti de l'auberge...

  17. #17
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    C'est bon en fait je n'avais pas utilisé contain() correctemen ^_^' la premiere fois c'est pour sa que j'était parti sur une autre solution avec des boucles imbriquées et tout, ce qui compliquait la chose. En fait j'avais pas redéfini equals et hashCode pour mes objet donc quand je faisais contain il ne trouvai rien. Yann2 c'est bon merci d'avoir essayé de comprendre.

  18. #18
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Tout ça pour ça...

    Tu mets résolu tu es gentil. Et la prochaine fois netteté et précision seront de rigueur merci !!!

    Et

  19. #19
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Et la prochaine fois netteté et précision seront de rigueur merci !!!
    Mon exemple était net simple et précis. iohack ma donné la réponse desuite.

  20. #20
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Non tu t'es embrouillé dans des explications vaseuses...

    Enfin soit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2006, 17h21
  2. récupérer un objet dans une liste chainée
    Par marsuwhite dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 14h05
  3. insertion d'objets dans une liste chainee
    Par mathher dans le forum C++
    Réponses: 8
    Dernier message: 20/04/2006, 16h28
  4. [Swing][JList] Placer un Objet dans une liste
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 17/02/2006, 10h31
  5. Récupérer un objet d'une liste déroulante
    Par Hell dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/01/2005, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo