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

Collection et Stream Java Discussion :

Comparer 2 arrayList et stocker le résultat dans un 3ème arrayList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut Comparer 2 arrayList et stocker le résultat dans un 3ème arrayList
    Bonjour tout le monde
    je veux comparer deux array et voir si le deuxiéme contient la même donnée que le premier donc stocker la donnée du premier array dans un arrayList 3ème
    pour éviter les répitition
    N.B: les 2 arrayList contient le résultat d'un classe telnet qui permet de telneter sur un routeur et de stocker toutes ses interfaces dans un tableau

    donc si une interface se trouve dans les 2 tableaux ajouter une seule celle du premier de le tableay de stockage
    voilà mon code il me donne rien j'ai essayer de faire des system.out mais rien n'est affiché :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    public class Test {
     
           public static void main(String[] args) {
     
        Connection conn = null;
         try { 
    conn = DriverManager.getConnection("jdbc:mysql://localhost/mohammedia", "root", "123456"); 
    String sql = "SELECT * FROM router;"; 
              Telnet_Interface telnet = new Telnet_Interface();
              Telnet_Interface telnet1 = new Telnet_Interface();
              Telnet_Interface telnet2 = new Telnet_Interface();
                PreparedStatement prest = conn.prepareStatement(sql);
                ResultSet res=prest.executeQuery();
                while(res.next()){
    telnet1.Config(res.getString(1), "user", "mdp", res.getString(1));
    telnet2.Config(res.getString(2), "user", "mdp", res.getString(2));
                }
               ArrayList myData=new ArrayList();
               ArrayList myData1=telnet1.getMyData();
               ArrayList myData2=telnet2.getMyData();
          boolean bool=false;            
      for(int i=0;i<myData1.size();i++)    
      {    
         for(int j=0;j<myData2.size();j++)    
        {
            if (myData2.get(j).equals(myData1.get(i)))
                 {                
                    bool=true; 
                    //System.out.print("sdfsd");
                 }
     
        if(!bool)
            {
                myData.add(myData2.get(j));
                //System.out.print("sdsd");
            }      
      }
      }
      for(int x=0;x<myData.size();x++)
      {
          System.out.print(myData.get(x));
      }
     
         } catch (SQLException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
         }       
    }
     
    }
    Le res.getString() sont les addresses ip des 2 routeurs que je compare leurs interfaces
    Merci

  2. #2
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Salut,

    c'est quoi le soucis exactement ? De ce que je vois en un coup d'oeil, tu ne remets pas ton bool à 'false' à la fin de ta première boucle du coup quand il passe à true, il ne revient jamais à false.

    Tchao !

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par cisco.nat Voir le message
    Bonjour tout le monde
    je veux comparer deux array et voir si le deuxiéme contient la même donnée que le premier
    Une liste contient de nombreuses données, pas une seule.

    Si tu veux savoir si deux listes sont identiques, j'ai tendance à préférer ce genre de code, plus simple à écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List liste1 = ....
    List liste2 = ....
    List temp = new ArrayList(liste1); // copie
    temp.removeAll(liste2); // on retire tout ce qui est identique
     
    boolean identiques = (liste1.size() == liste2.size()) && temp.size()=0;
    Finalement, si deux listes ont la meme taille et que leur différence est nulle, on peux en conclure qu'elles sont identiques

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut
    non elles ont pas la même taille juste elles contiennent des données identiques donc mois je veux stocker leurs données dans le dernier myData en évitant les données identiques stocker une et non pas deux c'est pour çà je fait ce test

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si ce que tu veux c'est juste fusionner en évitant les duplicatas, utilise un Set et ajoute tout dedans. Le Set garantit déjà l'unicité.

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut
    j'ai pas compris le set mais bon voilà ce que j'ai fait mais çà me donne rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    myData2.retainAll(myData1);        
               for(int i=0;i<myData2.size();i++){
                   System.out.print(myData2.get(i));
               }

  7. #7
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 286
    Par défaut
    bon j'ai fait çà est elle me donne deux size() différent c'est à dire il a supprimer les mêmes données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    System.out.print(myData2.size());
     
               myData2.retainAll(myData1);  
     
     
                   System.out.print(myData2.size());

  8. #8
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Ca donne rien peut-être parce que les deux listes contiennent les mêmes éléments du coup tous les éléments de la première liste sont enlevés x)

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    retainAll fait l'intersection, c'est une peux le contraire de ce que tu veux faire, non?

    Le Set, c'est comme List sauf que l'unicité des éléments est garantie. Ca définit un ensemble (au sens mathématique du terme)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set resultat = new HashSet();
    resultat.addAll(data1);
    resultat.addAll(data2);
    for (Object o : resultat)
       System.out.println(o);

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/03/2012, 23h06
  2. parcourir une arrayList et afficher le résultat dans un tableau
    Par the watcher dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 10/09/2010, 09h35
  3. [XL-2003] vba, stocker des résultats dans un fichier csv
    Par linann dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/06/2010, 21h17
  4. Stocker des résultats dans un fichier
    Par usthb23 dans le forum MATLAB
    Réponses: 9
    Dernier message: 28/12/2009, 14h25
  5. Réponses: 1
    Dernier message: 29/06/2007, 14h58

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