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

avec Java Discussion :

comparaison les éléments deux listes


Sujet :

avec Java

  1. #1
    Provisoirement toléré
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Points : 76
    Points
    76
    Par défaut comparaison les éléments deux listes
    bonjour tout le monde
    j'ai deux liste ArrayList je veux faire comparaison les éléments deux listes et faire sortir les éléments qui ne se trouvent pas dans la deuxième liste et les mettre dans troisième lite .
    j'ai essayé avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String data1="",data2="";
    for (int i =0;i<A.size() ;i++){
    data1 = A.get(i).toString() ;					
    for (int j =0;j<B.size() ;j++){
    data2 = B.get(j).toString() ;
    if (!data1.equals(data2)){
    C.add(data2)	;
    }
    }
    }
    le problème la liste C contient des éléments répétés
    par exemple
    A : 1 , 2,3,4,5
    B : 2,4
    alors C :1,1,3,3,5,5
    je veux que C contient que 1,3,5

  2. #2
    Membre actif Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Points : 293
    Points
    293
    Par défaut
    Bonjour,
    mais c'est normal qu'il y ait répétition puisque tu ajoute l'élément à chaque fois qu'il est différent ie:
    par exemple tu prend le 1 de A, ton code le compare à 2 de B, il est différent --> ajouter 1 à C
    ensuite il est comparé à 4 de B, il est différent donc --> ajouter 1 à C !!!
    ce qu'il faudrait c'est n'ajouter un élément de A à C que après avoir parcouru tous les éléments de B et s'il est différent de tous bien sûr!
    tu pourrais utiliser un booléen par exemple!
    bonne continuation!

  3. #3
    Provisoirement toléré
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Points : 76
    Points
    76
    Par défaut
    mais comment faire pour avoir une liste C

  4. #4
    Membre actif Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Points : 293
    Points
    293
    Par défaut
    exactement comme tu as fait, sauf que tu n'ajoutes pas un élément de A à C après chaque comparaison avec un élément de B mais après avoir fini de comparer!
    ça veut dire que la ligne ne dois pas être à l'intérieur du bloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int j =0;j<B.size() ;j++){ }
    mais juste après!
    et à l'intérieur il faut utiliser un booléen que tu initialiseras à "true" et que tu mettras à "false" si l'élément n'est pas différent. après la boucle, tu testeras le booléen: s'il est à "true" tu ajouteras l'élément à C sinon non.
    Voilà essaie de le faire c'est très facile!

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bon, sinon on peut aussi se rappeler les principes de primaire de la théorie des ensembles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Créer c, comme copie de a
    List<String> c = new ArrayList<String>(a);
    // Enlever de c tout ce qui est dans b
    c.removeAll(b);
    (Ce n'est pas forcément très bon en occupation mémoire, si A et B sont très grands et C très petit.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre actif Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Points : 293
    Points
    293
    Par défaut
    Bonjour,
    Je trouve la solution de thelvin meilleure et plus propre surtout!

Discussions similaires

  1. [Débutant] Récupérer les éléments de List<string>[]
    Par blackhox dans le forum C#
    Réponses: 4
    Dernier message: 02/11/2013, 16h53
  2. Comparaison d'éléments de listes
    Par hassenssas dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 18/11/2010, 17h46
  3. Réponses: 10
    Dernier message: 26/11/2008, 23h23
  4. Réponses: 0
    Dernier message: 08/11/2008, 17h19

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