Problème de remplissage de liste

Résolu/Fermé
Rune188 Messages postés 67 Date d'inscription lundi 20 février 2017 Statut Membre Dernière intervention 29 janvier 2024 - 1 janv. 2021 à 17:33
 Utilisateur anonyme - 1 janv. 2021 à 23:41
Bonsoir et bonne année,

Je rencontre un problème avec le remplissage d'une liste.
j'essaye de remplir un liste mais celle-ci ne se rempli que avec les mêmes valeur alors que je change pourtant a chaque tour de boucle for les valeurs de cette objet
voici mon code:
        BookCount bc = new BookCount();
        List<BookCount> bcList= new ArrayList<BookCount>();
        for(int i =0;i<bkLst.size();i++){
            bc.setBk(bkLst.get(i));
            bc.setNbr(countFile.get(i));
            System.out.println("book a ajouter: "+bc.getBk());
            bcList.add(bc);
        }
        
        System.out.println("*********************");
        for(int i =0;i<bcList.size();i++){
            System.out.println(bcList.get(i).getBk());
        }

et voici l'affichage:

3 réponses

Utilisateur anonyme
1 janv. 2021 à 20:32
Bonsoir

analysons ce que fait ton code.
Il crée un objet bc dont la portée est valable pour tout le code

Ensuite il modifie l'objet bc et l'ajoute à une liste.
Ensuite il modifie l'objet bc et l'ajoute à une liste.
Etc.

Donc à la fin la liste c'est
[bc, bc, bc, bc, bc, bc, bc, ...., bc]

Il t'affiche donc
bc
bc
bc
bc
bc
....
bc

1
Rune188 Messages postés 67 Date d'inscription lundi 20 février 2017 Statut Membre Dernière intervention 29 janvier 2024
1 janv. 2021 à 20:50
ok donc si je crée l'objet à chaque tour de boucle cela devrait fonctionné
        List<BookCount> bcList= new ArrayList<BookCount>();
        for(int i =0;i<bkLst.size();i++){
            BookCount bc = new BookCount();
            bc.setBk(bkLst.get(i));
            bc.setNbr(countFile.get(i));
            System.out.println("book a ajouter: "+bc.getBk());
            bcList.add(bc);
        }


Merci, je passe en résolu
0
Utilisateur anonyme
1 janv. 2021 à 23:41
Exactement
0