Problème de remplissage de liste

Résolu
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

  1. 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
    1. 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