Créer un tableau avec arraylist

Signaler
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
-
ulysse00
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
-
 
salut mes amis je coince car je n'arrive pas a utiliser arraylist car je veux créer un tableau dynamique avec arraylist 

Connection conn = null;
        String url = "jdbc:mysql://localhost/test";
        String userName = "root";
        String password = "11405";
 
        try
        {
          Class.forName("org.gjt.mm.mysql.Driver").newInstance();
          conn = DriverManager.getConnection(url, userName, password);
          System.out.println("Connected");
 
          Statement instruction = conn.createStatement();
          String sql = "select DISTINCT code_article  from test";
          ResultSet resultat = instruction.executeQuery(sql);
 
          int i = 1;
          String tab[] = new String[100];
          while(resultat.next()){
            String nom = resultat.getString("code_article");
 
            tab[i] = nom;
            i++;
 
          }<!-- END TEMPLATE: bbcode_code -->

dans mon code j'ai inicialisé  la valeur de tableau 100 mais si j'utilise les arraylist ça sera sympat avoir un tableau dynamique
merci de bien vouloir m'aider

13 réponses

Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

c'est assez simple et un séjour sur la javadoc t'aurait évité d'attendre que quelqu'1 s'occupe de ton cas.

import java.util.ArrayList;
import java.util.List;
.....
List<String> listNom = new ArrayList<String>();
//tu peux aussi dirrectement faire ArrayList<String> listNom = new ArrayList<String>();

while(resultat.next()){
    String nom = resultat.getString("code_article");
    listNom.add(nom);
}<!-- END TEMPLATE: bbcode_code -->
......

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
92
C'est l'avantage des collections (ce que je te disais précédement) : les listes permettent d'ajouter à la volée (ou supprimer) des éléments => pas besoin de fixer une taille à l'avance (pratique si on ne connait pas la taille justement !)
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
1
merci mes amis j'ai essayé de mettre :
List<String> listNom = new ArrayList<String>();

while(resultat.next()){
    String nom = resultat.getString("code_article");
    listNom.add(nom);
}<!-- END TEMPLATE: bbcode_code -->

un message d'erreur   "TableFromDatabase.java": '(' or '[' expected at line 36, column 37
et comment parcouri la liste  avec Iterator i =  listNom.iterator(); pour afficher resultat dans System.out.println("résultat"+);  


 
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

ma syntax est pour le jdk 1.5 et supérieur donc si tu es en 1.4 change le code par :
List listNom = new ArrayList();
//tu peux aussi dirrectement faire ArrayList<String> listNom = new ArrayList<String>();

while(resultat.next()){
    String nom = resultat.getString("code_article");
    listNom.add(nom);
}

sinon pour parcourirtu peux le faire de pleins de façons (je t'en met quelques une :
avec le jdk 1.4 :
for (int i = 0; i < listNom.size(); i++){
    String s = (String)listNom.get(i); //cast obligatoire
    System.out.println(s);
}

avec le jdk 1.5

for (int i = 0; i < listNom.size(); i++){

    String s = listNom.get(i); //pas besoin du cast vu qu'a la création est défini un modèle de type String don tu ne peux y mettre autre chose que des String

    System.out.println(s);

}
//ou en core

for (String s : listNom){

    System.out.println(s);

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
1
merci ami je viens de modifier mon code mais un message d'erreur  :


Connected
java.lang.IndexOutOfBoundsException: Index: 19584, Size: 19584






voici mon code 

 Statement instruction = conn.createStatement();
          String sql = "select DISTINCT code  from test";
          ResultSet resultat = instruction.executeQuery(sql);


      ArrayList A = new ArrayList();
      while (resultat.next()) {
                 String nom = resultat.getString("code");
                 A.add(nom);


      }


            String s = "select * from test";
            ResultSet resulta = instruction.executeQuery(s);
            ArrayList B = new ArrayList();
      while (resulta.next()) {
                 String nom2 = resulta.getString("code");
                 B.add(nom2);
      }
            
      float d= 0;
            
             for (int i = 0; i < A.size(); i++) {
               String s1 = (String) A.get(i);
                for (int j = 0; j < B.size(); j++) {
                  String s2 = (String) A.get(j);
                   if (s1.equals(s2) == true)
                  d++;
                }
                d=d/7;
              System.out.println("le support de " +  A.get(i) +" "+"égal :"+  d);
             }


 
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

remplace
for (int i = 0; i < A.size(); i++) {
               String s1 = (String) A.get(i);
                for (int j = 0; j < B.size(); j++) {
                  String s2 = (String) A.get(j);
                   if (s1.equals(s2) == true)
                  d++;
                }
                d=d/7;
              System.out.println("le support de " +  A.get(i) +" "+"égal :"+  d);
             }

par

for (int i = 0; i < A.size(); i++) {
               String s1 = (String) A.get(i);
                for (int j = 0; j < B.size(); j++) {
                  String s2 = (String) B .get(j);
                   if (s1.equals(s2) == true)
                  d++;
                }
                d=d/7;
              System.out.println("le support de " +  A.get(i) +" "+"égal :"+  d);
             }

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
1
merci ami jamais j'oublie ton gest je suis content

désolé encore si je te dérange

je ne métrisse pas encore comment supprimer les élément de la liste  voici mon exemple

package aa;




 import java.util.Iterator;
 import java.util.ArrayList;
class arry {
  public static void main(String[] args)   {
    ArrayList A = new ArrayList();
    A.add("a" );
    A.add("h" );
    A.add("v" );
    A.add("c" );
    A.add("v");
    A.add("3");


 A.remove("v");
          Iterator j =A.iterator();
    while (j.hasNext())    {
      Object o = j.next();
   
      System.out.println(o);


    }


         
}


alors println m'affiche a,h,c,3,v alors je cherche comment supprimer tout les éléments v de ma liste comment je peut utiliser la boucle


 
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

voici une 2 façons de faire (je fais pour le jdk 1.5 mais mise à part les templates c'est la meme chose):

Solution 1 :
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
......

List<String> list = new ArrayList<String>();
list.add("a" );
list.add("h" );
list.add("v" );
list.add("c" );
list.add("v");
list.add("3");
       
Collection<String> col = new ArrayList<String>();
col.add("v");
list.removeAll(col);
       
Iterator<String> j = list.iterator();
while (j.hasNext())    {
    String s = j.next();
    System.out.println(s);
}

Solution 2 :
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
......

List<String> list = new ArrayList<String>();
list.add("a" );
list.add("h" );
list.add("v" );
list.add("c" );
list.add("v");
list.add("3");
       
while(list.contains("v"))
    list.remove("v");
       
Iterator<String> j = list.iterator();
while (j.hasNext())    {
    String s = j.next();
    System.out.println(s);
}

fin bon un séjour sur la javadoc t'expliquerai tout ça et t'éviterai de perdre du temps à attendre que l'on te répondent

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
1
bonsoir ami et merci encore voici la modification de mon code

float d= 0;
            
             for(int i = 0; i < A.size(); i++){
               String s1 = (String) A.get(i);
                for(int j = 0; j < B.size(); j++){
                  String s2 = (String) A.get(j);
                   if(s1.equals(s2) == true)
                  d++;
                }
                d=d/4;
}}
system.out.println(A);


par exemple  la list A contient A,B,c


et la list B contient A,B,A,C


d comteur pour compter le nombre de chaque élément de la list A puis divisé par 7 alors j'aurais par exemple A=2/4,B=1/4et C=1/4 alors


 


le probleme que je voulais ajouter la condition if (d<2/4 ) supprimer les élément de la list A le résultat sera dans la list A que A
j'ai essayé d'ajouter apres  d=d/4;
if (d<2/4) {
A.set(i,"y");
while(list.contains("y"))
    list.remove("y");

mais ça n'a pas marché j'ai toujours la liste A avec

merci d'avance
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

je ne comprend pas ta demande peux-tu refaire en etant plus clair stp.

concèrnant ta boucle plus haut tu as une erreur
tu fais :
float d= 0;
for(int i = 0; i < A.size(); i++){
    String s1 = (String) A.get(i);
    for(int j = 0; j < B.size(); j++){
        String s2 = (String) A .get(j);
        if(s1.equals(s2) == true)//en java tu peux simplement faire if(s1.equals(s2))
            d++;
    }
    d=d/4;
}

or tu devrais faire :
float d= 0;

            
for(int i = 0; i < A.size(); i++){

    String s1 = (String) A.get(i);

    for(int j = 0; j < B.size(); j++){

        String s2 = (String) B .get(j);

        if(s1.equals(s2) == true)//en java tu peux simplement faire if(s1.equals(s2))

            d++;

    }

    d=d/4;

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
1
par exemple  la list A contient A,B,C


et la list B contient A,B,A,C


d comteur pour compter le nombre de chaque élément de la list A puis divisé par 4 alors j'aurais par exemple A=2,B=1et C=1


 


si  je voulais ajouter la condition if (d<3 ) supprimer les élément de la list A le résultat sera dans la list A que A car  le nombre de B et C inférieur a 3

 

if (d<3) {
A.set(i,"y");
while(list.contains("y"))
    list.remove("y");

mais ça n'a pas marché j'ai toujours la liste A avec A,B,C,B et normalemt j'aurais que A aprés la supprission 

mon ami essaie me comprendre  
Messages postés
5345
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
11 février 2020
90
Salut,

A,B,C sont de listes ou des entier de plus c'est quoi 'list' ou tu y met 'y' ? tu veux delete des entiers ou des lettres? bref pas mieux je ne comprend tjrs rien

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Statut
Membre
Dernière intervention
12 mai 2013
1
désolé ami j'ai deux liste A et B
liste A contient A,B,C
et la liste B contient A,A,B,C
d compte le nombre des éléments de la liste A dans  la liste B par exemple A de la liste A apparait deux fois dans la liste B
et je voulais supprimer les élément de la liste A mais apres le test de if que j'ai écrit