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 :

Créer une ArrayList d'objets


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Créer une ArrayList d'objets
    Bonjour,

    J'ai crée une class KeyValuePair de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class KeyValuePair extends Object {
     
    	public String nom;
    	public int valeur; }
    J'ai aussi un fichier texte qui donne ligne par ligne ce ceci :
    cerise
    pomme
    poire ... la longueur de la liste est variable selon l'utilisateur.

    Ce que je veux faire c'est créer une ArrayList composées d'objets myFruit de type KeyValuePair tel que quand je fais myFruit.nom je récupère cerise pour le premier, pomme pour le deuxième et myFruit.valeur retourne un nombre aléatoire.

    Je sais générer les nombres aléatoires (je me concentre sur .nom pour l'instant) et lire le fichier texte ligne par ligne.

    Mon code ressemble à ça :

    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
    	public ArrayList<KeyValuePair> GetFruit() throws IOException {
     
    		KeyValuePair myFruit = new KeyValuePair();
    		ReadFile file = new ReadFile(file_name);
    		String[] Lignes = file.OpenFile();
    		ArrayList<KeyValuePair> array= new ArrayList<KeyValuePair>();
     
    		for (int i=0; i < Lignes.length; i++) {
     
    		String mot= Lignes[i]
    		myAttribute.nom = mot;
    		array.add(myFruit);
     
    		}
    }
    Mon problème est que je ne sais pas comment créer l'ArrayList, est ce que je dois créer plusieurs objets au lieu de ne créer que un seul objet myFruit ? Je pensais que la boucle permettait de stocker la nouvelle valeur de catégorie pour chaque i mais en fait quand je fais System.out.println(array.get(0).nom), je récupère déjà toutes les catégories!

    J'espère que quelqu'un pourra m'aider !

    Merci

  2. #2
    Inactif
    Femme Profil pro
    Politicien dans l'industrie du X
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Activité : Politicien dans l'industrie du X

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 11
    Points
    11
    Par défaut
    il faut que tu fasses un nouvel objet à chaque tour de boucle sinon tu écrases tes premières valeurs avec tes nouvelles.


    Parce que si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<10;i++){
    myfruit.name=i;
    list.add(myfruit);
    }
    a la fin list.get(0).name sera à 10 car c'est la même instance que tu modifies à cahque fois

    et si tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i=0;i<10;i++){
    myfruit = new fruit();
    myfruit.name=i;
    list.add(myfruit);
    }
    list.get(0).name sera à 0 , list.get(1).name == 1 etc ... list.get(9).name == 9

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci ! Le truc c'est que maintenant le list.get(0).name me donne bien le premier nom, mais get(1) provoque un IndexOutOfBoundsException, ça veut dire que l'index n'existe pas pour 1?!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui. Mais ça ne devrait pas arriver si tu as suivi les indications.
    Il faut que tu montres ton code.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    En fait c'est le même code qu'au départ sauf que j'ai déplacé la création d'objets(KeyValuePair myFruit = new KeyValuePair()) dans la boucle.
    Je me demandais si la variable mot se faisait écraser aussi mais apparemment non puisque get(1).nom me donne bien le premier mot de la liste
    C'est bizarre parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(mot)
    me donne bien la liste de tous les noms et ça ne marche pas après avoir écrit que

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Juste au-dessus tu viens de dire que get(1) te fait un IndexOutOfBoundsException -_-°.
    get(1).nom peut pas te donner quelque chose, dans ce cas.

    Enfin bon, peu importe, tant que tu montreras pas du vrai code qui compile ça avancera pas ton affaire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je voulais dire get(0).nom pardon !
    J'ai modifié le code pour la lecture du fichier et ça marche maintenant!
    Merci d'avoir pris du temps pour m'aider

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/05/2008, 11h31
  2. Créer une liste d'objet spécifiques
    Par Lidden dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/02/2008, 10h26
  3. Réponses: 1
    Dernier message: 14/05/2007, 23h31
  4. Comment créer une collection d'objet ?
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 11/09/2006, 10h48
  5. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11

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