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 :

mettre la valeur dans une liste


Sujet :

Collection et Stream Java

  1. #1
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut mettre la valeur dans une liste
    salut mes amis
    je n'arrive pas à mettre le résultat dans une liste



    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
    public static void main(String[] args)   {
        ArrayList A = new ArrayList();
        A.add("a" );
        A.add("h" );
        A.add("v" );
        A.add("v" );
        A.add("h" );
        A.add("v");
        A.add("v");
     
     
       ArrayList B = new ArrayList();
       B.add("a" );
       B.add("h" );
       B.add("v");
     
     
       ArrayList F = new ArrayList();
      int d=0; 
      for (int i =0;i<B.size();i++){
        for (int j =0;j<A.size();j++){
         String Q1=B.get(i).toString();
         String Q2=A.get(j).toString(); 
            if (Q1.equals(Q2)==true){
            d++;
     
     
         }
     
        }
     
     
     
     
         System.out.println("résultat de  " +  B.get(i) +" "+"égal :"+  d);
         d=0;
      }
     
      }
    je cherche de mettre résultat d dans la liste F donc j'aurais F= {1,2,4} puis ajouter une condition if (d<1) alors supprimer a de la liste B alors j'aurais B={h,v}

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    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
     
     
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
        public static void main(String[] args)
        {
            // Noms et leur nombre d'occurences (ton B en clé, ton F en valeur)
            Map<String, Integer> nbByName = new HashMap<String, Integer>();
            nbByName.put("a", 0);
            nbByName.put("h", 0);
            nbByName.put("v", 0);
     
            // Occurences de valeurs (ton A)
            List<String> names = new ArrayList<String>();
            names.add("a");
            names.add("h");
            names.add("v");
            names.add("v");
            names.add("h");
            names.add("v");
            names.add("v");
     
            for (String name : names)
                 if (nbByName.containsKey(name))
                     nbByName.put(name, nbByName.get(name) + 1);
     
            System.out.print(Arrays.toString(nbByName.values().toArray())); // Affiche [1, 2, 4]
     
            // Les noms qui sont présents plusiseurs fois
            List<String> multiples = new ArrayList<String>();
     
            // Garder les noms qui sont présents plus d'une fois
            for (Map.Entry<String, Integer> couple : nbByName.entrySet())
                if (couple.getValue() > 1)
                    multiples.add(couple.getKey());
     
            System.out.print(Arrays.toString(multiples.toArray())); // Affiche [h, v]
     
        }

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Alors, là, bravo benwit, pour avoir compris le problème demandé

    C'était pas facile

  4. #4
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci mais est ce que si c'est possible utiliser ArrayList car j'ai une base de donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String s = "select * from test";
                ResultSet resulta = instruction.executeQuery(s);
                ArrayList A = new ArrayList();
          while (resulta.next()) {
                     String nom2 = resulta.getString("code");
                     A.add(nom2);
          }

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    @ ®om, je me suis fait un noeud au cerveau !

    @ ulysse031
    1/ Ton tableau A rempli à partir de ton dernier exemple, c'est bien une liste dans ton code (names dans le mien)
    2/ Et même, où est le problème si c'est B car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       String s = "select * from test";
       ResultSet resulta = instruction.executeQuery(s);
       Map<String, Integer> A = new HashMap<String, Integer>();
       while (resulta.next()) {
                     String nom2 = resulta.getString("code");
                     A.put(nom2, 0);
       }
    Mais bon, puisque la nuit porte conseil, tu peux faire également :

    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
    51
    52
    53
    public static void main(String[] args)
    {
        ArrayList A = new ArrayList();
        A.add("a" );
        A.add("h" );
        A.add("v" );
        A.add("v" );
        A.add("h" );
        A.add("v");
        A.add("v");
     
        ArrayList B = new ArrayList();
        B.add("a" );
        B.add("h" );
        B.add("v");
     
        ArrayList F = new ArrayList();
        int d=0; 
        for (int i=0;i<B.size();i++) // Parcours du tableau de référence
        {
             String Q1=B.get(i).toString(); // Mis ici pour éviter de recharger la valeur j fois alors qu'elle ne dépend pas de j.
     
             for (int j =0;j<A.size();j++) // Parcours des occurences
             {
                 String Q2=A.get(j).toString(); 
                 if (Q1.equals(Q2)==true)
                 {
                    d++; // compte les coccurences
                 }
             }
     
                    // Option 1 : Tu mémorise dans F les occurences de B
                    // F aura donc la même taille que B et F[i] donnera le
                    // nombre d'occurence de B[i] mais il te faudra alors
                    // raparcourir le tableau F à la fin pour pouvoir
                    // supprimer les B[i] qui ne sont présents qu'une fois.
                    // A décommenter si tu choisi l'option 1
                    // F.add(d); // ou F.add(i, d);
                    // d = 0; // On remet d à 0
     
                    // Option 2 : Tu mémorise dans F uniquement les B[i]
                    // qui apparaissent plus d'une fois, il n'y a alors plus à parcourir
                    // F mais tu n'as pas les occurences de chaque B
                    if (d > 1)
                       F.add(Q1);
                    d = 0; // On remet d à 0
     
        }   
     
        // Je le fais pas mais si tu choisi l'option 1, 
        // il faut que tu parcours F pour pouvoir virer les F[i] qui sont une seule fois
     
    }

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  6. #6
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    je n'ai pas compris bien ta méthode et en plus est ce que si possible de mettre F.add(d) car on a l'habitude de mettre B.add("d")
    je coince encore je passe de heures pour m'avancer

  7. #7
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Bon, résumons car je suis perplexe :

    1/ Dans mon premier message, je t'ai donné une solution avec une HashMap qui fonctionne mais tu parais avoir du mal pour la remplir.

    2/ Dans mon deuxième message, j'ai peut être été un peu confus :

    Au début, je te donne donc une solution pour continuer avec ma 1° solution et la récupération via ta bdd.

    Puis, des idées m'étant venues entre temps, je te donne alors une autre solution plus proche de ton code original. Dans cette 2° solution, 2 options se présentaient :
    la 1° option qui consistait à mémoriser le nombre d'occurences dans F puis à effacer les éléments de B pour lequel d <= 1. Option non complètement implémenté parce que je pensais que mon option 2 était préférable.
    la 2° option ne mémorisant plus les occurences dans F mais directement les éléments de B pour lequel d <= 1.

    Visiblement, cela t'as perturbé. Donc je te propose une 3° et dernière solution se basant sur ton code initial et mettant en oeuvre explicitement ce que je suggérai dans l'option 1 de ma 2° solution.


    3/ Ma solution a ton problème :

    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
        public static void main(String[] args)
        {  
            ArrayList A = new ArrayList(); 
            A.add("a" ); 
            A.add("h" ); 
            A.add("v" ); 
            A.add("v" ); 
            A.add("h" ); 
            A.add("v"); 
            A.add("v");   
     
            ArrayList B = new ArrayList(); 
            B.add("a" ); 
            B.add("h" ); 
            B.add("v"); 
     
            ArrayList F = new ArrayList(); 
            int d=0; 
            for (int i=0;i<B.size();i++) 
            {  
                String Q1=B.get(i).toString(); 
                for (int j =0;j<A.size();j++)
                {
                    String Q2=A.get(j).toString(); 
                    if (Q1.equals(Q2)==true)  
                        d++;
                }
     
                F.add(d);
                d = 0;
            }
     
            System.out.print(Arrays.toString(F.toArray())); // Affiche [1, 2, 4]
     
            for (int i=0;i<F.size();i++) 
            {  
                d = (Integer) F.get(i);
                if (d <= 1)
                    B.remove(i);
            }
     
            System.out.print(Arrays.toString(B.toArray())); // Affiche [h, v]
        }
    Pour ton exemple, F et B contiennent bien ce que tu demandais dans ton post initial. Si cela ne te convient pas, soit plus explicite car je vais finir par croire que je n'ai rien compris à ton problème.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  8. #8
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut mon ami merci encore mais ça n'a pas marché un message d'rreur voila le message

    "arry.java": cannot resolve symbol: method add (int)in class java.util.ArrayList at line 39, column 18
    "arry.java": cannot resolve symbol: variable Arrays in class aa.arry at line 43, column 29
    "arry.java": incompatible types;found : java.lang.Integer,required: int at line 47, column 20
    "arry.java": cannot resolve symbol: variable Arrays in class aa.arry at line 52, column 29


  9. #9
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Désolé, c'est ma nouvelle habitude de programmer avec java 1.5 qui fait l'autoboxing.
    Comme tu dois utiliser une version de java < 1.5 :

    remplace F.add(d); par F.add(new Integer(d));

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  10. #10
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci encore ami mais un message d'erreur sur la ligne
    System.out.print(Arrays.toString(F.toArray()));
    d = (Integer) F.get(i);
    System.out.print(Arrays.toString(B.toArray()));


    "arry.java": cannot resolve symbol: variable Arrays in class aa.arry at line 43, column 29
    "arry.java": incompatible types;found : java.lang.Integer,required: int at line 47, column 20
    "arry.java": cannot resolve symbol: variable Arrays in class aa.arry at line 52, column 29



  11. #11
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    ajouter en tête du fichier : import java.util.Arrays;

    et modifier

    d = (Integer) F.get(i);

    en

    d = ((Integer) F.get(i)).intValue();

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  12. #12
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci mon cher ami jamais je vais oublier ton geste

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/04/2014, 07h57
  2. Réponses: 4
    Dernier message: 20/04/2006, 00h34
  3. VBA : ajouter une valeur dans une liste déroulante
    Par remi59 dans le forum Access
    Réponses: 4
    Dernier message: 22/12/2005, 10h01
  4. Réponses: 1
    Dernier message: 29/09/2005, 11h10
  5. Ajouter un valeur dans une liste modifiable
    Par ancylia dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2005, 12h50

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