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 :

Comportement étrange sur le .add d'une arrayList


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 52
    Points
    52
    Par défaut Comportement étrange sur le .add d'une arrayList
    Bonjour j'ai un soucis avec la methode .add d'une arraylist qui ne se comporte pas du tout comme cela devrait être le cas.

    voici mon code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    protected Jeu transformJeu(ElirePhotoEntity jeuElireEntity) throws ConvertionException {
     
    		ElirePhoto jeu = (ElirePhoto) new JeuEntityToMetier<>().jeuEntityToMetier(jeuElireEntity);
    		jeu.setDateFinInscription(jeuElireEntity.getDateFinInscription());
    		jeu.setDateDebut(jeuElireEntity.getDateDebut());
    		jeu.setDateFin(jeuElireEntity.getDateFin());
     
    		Collection<EntityPhoto> photosEntity = jeuElireEntity.getPhotosEntity();
    		ArrayList<Photo> convPhotos = new ArrayList<Photo>();
    		Photo convPhoto = new Photo();
    		EntityPhoto photoEntity = new EntityPhoto();
    		Iterator<EntityPhoto> it = photosEntity.iterator();
     
    		while (it.hasNext()) {
    			photoEntity = it.next();
    			convPhoto.setId(photoEntity.getId());
    			System.out.println("dans convert id entity" + photoEntity.getId());
    			System.out.println("dans convert id photo" + convPhoto.getId());
    			convPhoto.setNom(photoEntity.getNom());
    			convPhoto.setUrl(photoEntity.getUrl());
    			System.out.println(convPhotos.getClass());
    			convPhotos.add(convPhoto);
    			Iterator<Photo> y = convPhotos.iterator();
    			while (y.hasNext()) {
    				Photo photoy = y.next();
    				System.out.println("Iter photos dans while" + photoy.getId());
    			}
     
    			System.out.println("Avant le retour du hasNext" + convPhoto);
    		}
     
    		System.out.println("En dehors dans la boucle" + convPhoto);
     
    		Iterator<Photo> i = convPhotos.iterator();
    		while (i.hasNext()) {
    			Photo photoi = i.next();
    			System.out.println("iter convPhotos en dehors" + photoi.getId());
    		}
    		jeu.setPhotos(convPhotos);
    		return jeu;
    	}
    }
    et voici la trace de ce que j obtiens :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    15:01:33,446 INFO  [stdout] (default task-1) dans convert id entity612
     
    15:01:33,447 INFO  [stdout] (default task-1) dans convert id photo612
     
    15:01:33,447 INFO  [stdout] (default task-1) class java.util.ArrayList
     
    15:01:33,447 INFO  [stdout] (default task-1) Iter photos dans while612
     
    15:01:33,448 INFO  [stdout] (default task-1) Avant le retour du hasNextPhoto [ id=612nom=photo3, url=http://localhost:8080/mapGyverWeb/assets/img/jouer3.jpg]
     
    15:01:33,448 INFO  [stdout] (default task-1) dans convert id entity613
     
    15:01:33,448 INFO  [stdout] (default task-1) dans convert id photo613
     
    15:01:33,449 INFO  [stdout] (default task-1) class java.util.ArrayList
     
    15:01:33,449 INFO  [stdout] (default task-1) Iter photos dans while613
     
    15:01:33,449 INFO  [stdout] (default task-1) Iter photos dans while613
     
    15:01:33,450 INFO  [stdout] (default task-1) Avant le retour du hasNextPhoto [ id=613nom=photo4, url=http://localhost:8080/mapGyverWeb/assets/img/jouer4.jpg]
     
    15:01:33,450 INFO  [stdout] (default task-1) dans convert id entity610
     
    15:01:33,451 INFO  [stdout] (default task-1) dans convert id photo610
     
    15:01:33,451 INFO  [stdout] (default task-1) class java.util.ArrayList
     
    15:01:33,451 INFO  [stdout] (default task-1) Iter photos dans while610
     
    15:01:33,451 INFO  [stdout] (default task-1) Iter photos dans while610
     
    15:01:33,452 INFO  [stdout] (default task-1) Iter photos dans while610
     
    15:01:33,452 INFO  [stdout] (default task-1) Avant le retour du hasNextPhoto [ id=610nom=photo1, url=http://localhost:8080/mapGyverWeb/assets/img/jouer1.jpg]
     
    15:01:33,452 INFO  [stdout] (default task-1) En dehors dans la bouclePhoto [ id=610nom=photo1, url=http://localhost:8080/mapGyverWeb/assets/img/jouer1.jpg]
     
    15:01:33,453 INFO  [stdout] (default task-1) iter convPhotos en dehors610
     
    15:01:33,453 INFO  [stdout] (default task-1) iter convPhotos en dehors610
     
    15:01:33,453 INFO  [stdout] (default task-1) iter convPhotos en dehors610

    Donc si je ne me trompe pas ici mon add n'ajoute pas seulement une "case" a mon ArrayList mais réécrit toutes les cases déjà existante ce qui n'est pas son comportement normalement.
    en gros au premier passage du while j'ai :
    convPhotos = [case 0] id =612

    au deuxieme passage convPhotos=[case 0]id=613 [case 1]id=613
    Etc

    Et j'avoue que je ne vois pas du tout pourquoi ....

    Si quelqu'un a une piste je suis preneur
    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 52
    Points
    52
    Par défaut
    bon j'ai trouvé le problème (Merci a mon collègue qui m'a bien aidé).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Collection<EntityPhoto> photosEntity = jeuElireEntity.getPhotosEntity();
    		ArrayList<Photo> convPhotos = new ArrayList<Photo>();
    		EntityPhoto photoEntity = new EntityPhoto();
    		Iterator<EntityPhoto> it = photosEntity.iterator();
     
    		while (it.hasNext()) {
    			photoEntity = it.next();
    			Photo convPhoto = new Photo();
    			convPhoto.setId(photoEntity.getId());
    En fait je mettais toujours le même objet dans l'ArrayList et faisait varier les propriétés du dit Objet.
    En mettant la creation de convPhoto dans la boucle cela marche sans soucis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comportement étrange sur le UNION
    Par tribaleur dans le forum Requêtes
    Réponses: 11
    Dernier message: 08/08/2014, 09h42
  2. Comportement étrange sur iPad
    Par elvan49 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/10/2011, 07h13
  3. Réponses: 2
    Dernier message: 17/10/2009, 18h27
  4. Comportement étrange sur un bulleted list
    Par stroumfs dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/10/2008, 15h51
  5. [2.0] comportement étrange sur condition sur string.indexOf
    Par franculo_caoulene dans le forum VB.NET
    Réponses: 26
    Dernier message: 18/06/2008, 12h09

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