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 :

Problème avec ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème avec ArrayList
    Salut tout le monde!

    J'ai un problème...je sais, brusque entrée en matière mais je bloque complètement.
    J'ai utilisé dans mon Projet la classe ArrayList...mais elle fonctionne de façon bizarre, autant dire qu'elle ne fonctionne pas, en fait, voilà en détail:
    j'ai besoin de garder en mémoire les coordonnées de deux cases d'une matrice, donc j'ai créé une classe Memory qui contient comme champ :di, dj, ci, cj, et la valeur de la case i-j ,et je fais donc à mon ArrayList mem :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mem.add(new Memory(value, di,dj,ci,cj)
    //Memory (char, int,int,int,int) étant le constructeur

    et j'ai eu une incohérance donc je ne comprenais pas la cause, alors j'ai décidé d'afficher avant et après chaque add le contenu de mem (mon ArrayList)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for (int k=0;k<mem.size();k++)
            System.out.print(mem.get(k).di+"-"+mem.get(k).dj+"|"+mem.get(k).ci+"-"+mem.get(k).cj+"\n");
     
    		mem.add(new Memory(grille[i][j].value, i,j,ii,jj));
    		System.out.print("l'etat du tableau AAAAPTRESt \n");
    		for (int k=0;k<mem.size();k++)
    	System.out.print(mem.get(k).di+"-"+mem.get(k).dj+"|"+mem.get(k).ci+"-"+mem.get(k).cj+"\n");
    et le résultat est étrange, en fait, add ne fait pas qu'ajouter le Memory que je viens de créer, elle remplace TOUS les elt de mem par celui qu'on vient d'ajouter.

    J'ai mis en premier un elt dans mem : (-1,-1,-1,-1)

    puis j'ai ajouté un (0,0,0,1) et le résultat donne ça :

    -1--1|-1--1
    l'etat du tableau AAAAPTRESt
    0-0|1-0
    0-0|1-0
    je l'a rappel encore avec (1,1,0,1) et ça affiche ceci:
    l'etat du tableau AVANT
    0-0|1-0
    0-0|1-0
    l'etat du tableau AAAAPTRESt
    1-1|0-1
    1-1|0-1
    1-1|0-1
    et ainsi de suite, chaque fois, le nombre d'élement augmente, mais les élements semble les même, alors j'ai décidé d'afficher le toString() des elements de mem, pour savoir si c juste un problem de boucle (même si je voyais pas du tout d'où viendrait le blem)et en fait, ça affiche les elements differents, donc apparament, l'operation add modifi tous les elements de l'ArrayList:
    l'etat du tableau AVANT
    hitori.Memory@124e48f //premier et seul element

    l'etat du tableau AAAAPTRESt

    hitori.Memory@124e48f //premier element
    hitori.Memory@1198ed3 //deuxième element
    j'ai retourné le problème dans tous les sens, je ne vois aucune explication. J'ai même essayé avec LinkedList, Vector (je sais, pas bien, c'est deprecated), toujours le même problème
    pouvez-vous m'aidez s'il vous plait?

    Merci.

    PS: Memory :

    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
    public class Memory {
    	//coordonnée de conflict
    	public static int ci;
    	public static int cj;
    	//coordonnée de deleted
    	public static int di;
    	public static int dj;
    	//la valeur de la case
    	public static char v;
     
     
    	Memory(char vv, int dii, int djj, int cii, int cjj){
    		v=vv;
    		di=dii;
    		dj=djj;
    		ci=cii;
    		cj=cjj;
    	}
    }

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Ce n'est pas la classe ArrayList qui ne fonctionne pas mais ta classe Memory !!!


    Tous ses champs sont static et donc unique pour toute l'application et non pas propre à chaque instance.


    Je te conseille vivement de te diriger vers les cours Java


    a++

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Problem Solved!!!

    Franchement, ils auraient dû nous dire ça dans les cours à la fac, ils nous ont toujours dit "mettez static" mais ils ont pas expliqué ><

    merci bcp!! vous me sauvez la vie, ça fait une semaine que je me creuse le crane...
    je vais faire un tour sur les cours java de developpez, j'y trouverais sûrement un meilleur enseignement ><

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Aïra Kaz Voir le message
    ils nous ont toujours dit "mettez static" mais ils ont pas expliqué ><
    Oulà ca fait peur ca

    a++

  5. #5
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Citation Envoyé par Aïra Kaz Voir le message
    Franchement, ils auraient dû nous dire ça dans les cours à la fac, ils nous ont toujours dit "mettez static" mais ils ont pas expliqué ><
    Ca c'est parce que t allé qu'a un seul cours mdr

Discussions similaires

  1. Problème avec ArrayList
    Par yarf dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/07/2007, 10h50
  2. problème avec ArrayList et JVM
    Par ulysse031 dans le forum Collection et Stream
    Réponses: 29
    Dernier message: 26/04/2007, 20h47
  3. problème avec arraylist
    Par ulysse031 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 27/02/2007, 12h00
  4. [débutant] problème avec arraylist
    Par sissi25 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/12/2006, 16h01
  5. Problème avec ArrayList <String>
    Par fiphi dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 29/08/2006, 09h30

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