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

tof008
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
- 4 nov. 2006 à 11:53 - Dernière réponse : cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 4 nov. 2006 à 12:56
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 
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 4 nov. 2006 à 12:34
3
Merci
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

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Twinuts
Meilleure réponse
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 4 nov. 2006 à 12:52
3
Merci
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

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Twinuts
Meilleure réponse
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 4 nov. 2006 à 12:56
3
Merci
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...

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 4 nov. 2006 à 11:59
0
Merci
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).
Commenter la réponse de cs_DARKSIDIOUS
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 4 nov. 2006 à 12:11
0
Merci
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
Commenter la réponse de Twinuts
tof008
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
- 4 nov. 2006 à 12:23
0
Merci
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 
Commenter la réponse de tof008
tof008
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
- 4 nov. 2006 à 12:28
0
Merci
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 
Commenter la réponse de tof008
tof008
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
- 4 nov. 2006 à 12:37
0
Merci
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 
Commenter la réponse de tof008
tof008
Messages postés
707
Date d'inscription
jeudi 5 mai 2005
Dernière intervention
5 janvier 2010
- 4 nov. 2006 à 12:53
0
Merci
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 
Commenter la réponse de tof008

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.