Bonjour,
Ça fait un moment que je parcours les conseils de ce forum, et malgré toutes les réponses que j'ai pu lire aucune n'a pu faire fonctionner mon programme.
Mon programme scanne une fichier .txt pour récupérer des informations à des endroits précis. Avec ces informations, je créé des objets pour les contenir. Jusque là, tout va bien. Afin de stocker et de pouvoir facilement accéder à ces objets, j'ai créé un ArrayList, vu que je ne peux savoir à l'avance combien d'objet seront créés par chaque fichier lu. Puis j'ai essayé d'afficher ces objets, de manière à vérifier que le tableau était bien créé.
C'est là que ça se gatte : Ayant lu la documentation Java sur les ArrayList, j'en suis arrivé à un petit algorithme tout simple, placé après la boucle de lecture du fichier :
for (int j=0;j<Tab.size();j++)
{
Tab.get(j).ecrireCDS();
}
ecrireCDS est ma fonction qui écrit les objets, et je peux vous assurer qu'elle marche très bien. Le problème est que le résultat de cet algorithme ne me donne que le dernier objet rentré dans mon ArrayList (Ici, Tab). Un compteur en static dans la fonction ecrireCDS me confirme cependant que le programme y passe bien un nombre de fois égal au nombre d'objets dans mon tableau. De plus, un affichage de type Tab.get(i).ecrireCDS au moment où l'objet est rajouté dans la liste me confirme que chaque objet est bien rentré.
J'ai essayé toute une batterie de test sur les différentes variables, dont je vous passerai tout les détails. J'ai essayé d'afficher la taille de ma liste, et elle a toujours été cohérente avec ce qu'elle était censée être. J'ai essayé de faire un bête println sur le Tab.get(j) dans la seconde boucle, et les identifiants des objets qui en sortaient a l'écran étaient tous differents.
J'ai de plus essayé de récupérer une syntaxe utilisant des iterator (bien que n'ayant pas exactement comprit comment ça fonctionnait...), mais toujours le même problème : seul le dernier objet de la liste était affiché.
Donc voilà. Je ne sais pas si le problème vient de ma fonction ecrireCDS, qui pourtant marchait très bien avant cela, ou si je fais une mauvaise utilisation des ArrayList, ou si c'est la combinaison des deux qui fait que ça ne fonctionne pas.

J'avais déjà vu une syntaxe similaire : Iterator it= Tab.iterator(); (sans le "new", donc) Ceci dit, même avec cette "nouvelle" syntaxe (je l'avais déjà essayée), le résultat reste le même : seul le dernier élément est affiché.