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 :

travaille sur deux listes


Sujet :

Langage Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut travaille sur deux listes
    Bonjour, j'ai deux listes, liste A et liste B. Dans un premier temps je voudrais que les éléments se trouvant dans liste A et pas dans liste B, soit rajouté a liste B et dans un deuxieme temps les éléments de liste B ne se trouvant pas dans liste A soit retiré de liste B. Quelqu'un aurait il un exemple sur ce type de recherche entre 2 liste ?
    Merci de votre aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    salut
    precise le type de liste que tu utilises
    tu peux utiliser la methode .contains
    pour verifier si l element est present, et add, et remove
    pour supprimer ou ajouter

    En esperant t avoir aidé

  3. #3
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    Salut Angelina, voici mon traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    for(Iterator itA = listeA.iterator(); itA.hasNext();)
    {
       Object objA = itA.next();
       if(objA instanceof Personne)
       {
          Personne personneA = (Personne)objA;
          String nameA = personneA.getName();
          for(Iterator itB = listeB.iterator(); itB.hasNext();)
          {
              Object objB = itB.next();
              if(objB instanceof Personne)
              {
                  Personne personneB = (Personne)objB;
                  String nameB = personneB.getName();
                  if(!nameA.equals(nameB))
                  {
                     listeB.add(personneA);
                  }
               //Fermeture des boucles......
    Voila mon traiment pour l'ajout des éléments qui ne sont pas dans la listeB mais dans la listeA, maintenant je voudrais pouvoir dans la même boucle si possible supprimer un élément de listeB si il ne se trouve pas dans la listeA cad ne plus comparer listeA avec listeB mais le contraire. Enfin c'est comme sa que je voit les choses sii qqun a une meilleure idée sachant que la comparaison s'effectue sur le nom des objets contenu dans la liste.
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    pourquoi tu n'utilises pas des while a la place de tes for
    et sache que 2 boucles imbriqués coute cher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Iterator itA = listeA.iterator()
     
    while(itA.hasNext())
    {
       Object objA = itA.next();
       if(objA instanceof Personne)
       {
          Personne personneA = (Personne)objA;
          String nameA = personneA.getName();
    	Iterator itB = listeB.iterator()
     
          while(itB.hasNext())
          {
              Object objB = itB.next();
              if(objB instanceof Personne)
              {
                  Personne personneB = (Personne)objB;
                  String nameB = personneB.getName();
                  if(!nameA.equals(nameB))
                  {
                     listeB.add(personneA);
                  }

    essaie voir de faire ca aussi
    car itA.next() est deja un objet
    tu gagnes une variable
    et comme tu l as fait deux fois, ben t en gagne 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(itA.next() instanceof Personne)

  5. #5
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    OK merci, et comment faire dans le même traitement supprimer les objet de liste B?

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    un liste.remove(objet_a_enlever)

  7. #7
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    Je ne cherche pas la méthode qui me permet de retiré un objet d'une liste mais plutot la façon de faire, la condition pour laquelle j'appellerai listeB.remove() ?

  8. #8
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    Voila une façon de faire pour ce que je voulais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List A = Arrays.asList(new String[]{"a","b","c"        }); 
    List B = Arrays.asList(new String[]{        "c","d","e"}); 
     
    Set S = new HashSet(A);                 // S = {a, b, c      }
    S.addAll(B);                            // S = {a, b, c, d, e}
    S.retainAll(B);                         // S = {      c, d, e}
    A = Arrays.asList(S.toArray());         // A = S
     
    System.out.println("A = "+A);

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

Discussions similaires

  1. travailler sur deux classeurs
    Par TEXMAN1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/02/2008, 15h39
  2. [VBA-E] travailler sur deux classeurs
    Par argv666 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/09/2006, 10h40
  3. [Tableaux] Travail sur deux tableaux à 2 dimensions
    Par BigBarbare dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2006, 17h25
  4. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 10h59
  5. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22

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