Créer une arrayList d'instances [Résolu]

Signaler
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonjour à tous!
J'ai un petit probleme concernant un micro projet que je dois rendre.
Je dois créer une ArrayList qui contient des instances, pour ensuite les écrire dans un fichier. Pour plus de détails, j'ai une classe machine modélisant une machine qui a comme parametre un nom, une IP,... et je dois enregstrer tout ca dans un fichier. Pour cela je dois créer une ArrayList d'instances de machines (donc de machines) pour pouvoir travailler dessus. Ensuite, j'ecrase les données de mon fichier pour y mettre l'ArrayList modifiée..
Est ce que quelqu'un pourrait me donner une piste? Comment mettre des instances dans une ArrayList?
Je vous remercie d'avance pour l'auide que vous pourrez m'apporter!

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 

9 réponses

Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

enfait dans ton exemple il y a des instances d'objet que tu met dans ton arraylist soit

while((texte = br.readLine()) != null)
    listeService.add( texte);//ici tu rajoute une instance de string dans ton arraylist

maintenant je ne vois pas beacoup ce que tu entends par "la remplir d'instances"...

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

WORA
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

enfait il n'y a qu'avec les string que tu n'es pas obligé de faire un new exemple:String str "hello"; revient a faire String str new String("hello");
sinon pour le reste faut creer un instance soit pour ton cas
listeService.add( new Machine());
    ou encore
listeService.add( new Machine(....));//les .... represente les arguments du constructeur si il y a

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

WORA
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Bah en fait, si j'ai bien compris ton problème, c'est que tu veux ajouter des instances d'objets dans une ArrayList.

Alors soit tu fait comme te l'as proposé twinuts :
Machine oMachine = new Machine();
Array.add(oMachine);

Soit tu crée une classe qui te permettra de récupèrer une nouvelle instance de Machine, tout en l'ajoutant dans l'arraylist, donc une méthode createMachine :

Machine createMachine() {
    Machine oMachine = new Machine();
    array.add(oMachine);
    return oMachine;
}

Ce qui te permet d'éviter d'oublier de l'ajouter dans l'arraylist...
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Bah une instance, c'est un objet... donc il te suffit de stocker tout les objets de type machine (lors de leur création par exemple => design pattern fabrique).
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
Salut,

et pour les int,float,double, et tout type primitif du genre si tu es en jdk 1.5 pas de malaise il y a grdtion de l'autoboxing sinon faut passer par les class wrapper soit

int -> java.lang.Interger
long -> java.lang.Long
double -> java.lang.Double
boolean -> java.lang.Boolean
......

vu qu'un arraylist prends des objet et non des type primitif ...

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

WORA
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
25
Merci DarkSidious ( de l'aide en vb, de l'aide en java, je vais bientot t'employer à temps plein lol), j'ai recherché le design pattern fabrique sur google, je vois pas trop le principe, mais je vais approfondir ca...
Est ce que tu pourrai juste me montrer un petit exemple d'ajout d'une instance dans une arrayList? Un truc vite fait qui pourrait debloquer mon pauvre cerveau lol!
J'espere ne pas abuser!!!!
Merci!

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
25
Merci Twinuts! mais pour remplir une ArrayList normale, aucun problème!  Pour vous prouver que je peux quand même sortir une méthode en java (lol) voila mon code pour remplir une ArrayList avec les données d'un fichier  :

  public ArrayList listerService()
         {
            ArrayList listeService = new ArrayList();
            String cheminFichier = System.getProperty("user.dir") + "\\service.txt";
             FileReader fr = null;
             String texte = "";
            
            try {
                fr = new FileReader(cheminFichier);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             BufferedReader br = new BufferedReader(fr);
             try
             {
            //on transfere les données du fichier service dans une ArrayList de maniere à lister
            // tous les services
                 while((texte = br.readLine()) != null) 
                     {    
                   
                    listeService.add( texte);
                                           }
                 br.close();
                 fr.close();
                 //il faut bien fermer le FileReader et le BufferedReader
                
             }
            
             catch(IOException ioe){System.out.println("erreur : " + ioe);}
            
             return listeService;
            
         }

C'est juste pour la remplir d'instances que je bloque... Mais j'ai quelques problèmes encore avec la prog objet. Ca viendra mais sur certains points, c'est trés flou...

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
25
donc si je fais ca :
Machine mach = new Machine(...)
while((texte = br.readLine()) != null)
    listeService.add( Machine);//ici tu rajoute une instance de Machine dans ton arraylist
ca me permet de rajouter une instance à mon ArrayList?
Pour remplir d'instance, en fait je voulais dire ajouter des instances à mon ArrayList...

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
25
Ben merci beaucoup c'était exactement ca que je voulais!

listeService.add( new Machine(....));//les .... represente les arguments du constructeur si il y a

Du coup tout me parait plus clair! Merci pour ton aide

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT