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

avec Java Discussion :

Arraylist remplace tous les objets par le dernier ajouté


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 1
    Par défaut Arraylist remplace tous les objets par le dernier ajouté
    Bonjour,

    Mon objectif est de recuperer à partir d'une base de donnée les notes d'un eleve pour en calculer la moyenne. J'arrive a me connecter à la base de donnée sans probleme.

    Je possede une classe Evaluation qui a pour attribut un id(int), une note(int), l'id de la matiere(int) et une appreciation(String). A chaque fois que je recupere les donnees de l'evaluation, je la stock dans un arraylist d'Evaluation pour pouvoir recuperer toutes les informations de la table.

    La ou je bloque, c'est que mon arraylist pour stocker ces informations, remplace a chaque tour tous les objets par le dernier ajouté.

    Voici ma boucle :

    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
    while(rs.next())
            {
                this.setId(rs.getInt("id"));
                this.setNote(rs.getInt("note"));
                this.setDetBul_id(rs.getInt("detailBulletinId"));
                this.setAppreciation(rs.getString("appreciation"));
                test.add(i,this);
     
                i++;
     
                for(int j =0; j<test.size(); j++){
                System.out.println(test.get(j).note + "note");
                }
     
            }

    Merci beaucoup !

  2. #2
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut
    Bonjour,

    C'est un problème classique.
    Le code que tu publies doit être dans la classe Evaluation, si je ne me trompes pas, l'objet 'ajouté' à la liste étant 'this'.
    Combien d'instances de Evaluation sont placées dans la liste ? 1 seule.
    L'ajout dans une liste ne crée pas de copie d'objet, il s'agit juste de placer une référence dans une collection. La liste comporte donc N références à une seule instance d'Evaluation, dont les valeurs sont les dernières lues en base.

    Il faut créer une nouvelle Evaluation dans la boucle while, la renseigner avec les valeurs lues en base, et l'insérer dans la liste.

Discussions similaires

  1. Comment remplacer tous les vides par un tiret.
    Par Abdelinho dans le forum Word
    Réponses: 1
    Dernier message: 03/08/2010, 20h20
  2. Réponses: 7
    Dernier message: 03/10/2007, 17h58
  3. [Débutant] Initialiser les propriétés de tous les objets d'une ArrayList
    Par Tententai dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 23/05/2006, 20h24
  4. Trouver tous les objets d'un certain type dans un document?
    Par kobe dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 03/11/2005, 17h07
  5. Rafraichissement de la fiche ainsi que de tous les objets
    Par portu dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/01/2004, 00h25

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