J'ai un petit soucis avec une arraylist de tableau d'entier.
Lorsque j'essaie d'y ajouter un élément dans la arrayList, l'element est bien ajouté mais écrase aussi les autres élément déjà dans dedans.
Voici un petit bout de code et son execution pour mieu comprendre :
private static ArrayList<Integer []> liste = new ArrayList<Integer[]>();
/***** du code *****/
public static void test (Integer[] d){
System.out.println("element recu");
for (int i=0; i<10; i++)
System.out.print(d[i]+" ");
System.out.println("");
liste.add(d);
System.out.println("contenu liste");
for (int j=0; j<rememberDigit.size(); j++){
for (int i=0; i<10; i++)
System.out.print(liste.get(j)[i]+" ");
System.out.println("");
}
System.out.println("taille = " + test.size());
System.out.println("");
}
- Résultat d'execution (j'appelle test 3 fois, a chaque fois je veux ajouter l'element que je lui donne en parametre dans la arrayList) :
element recu
116 125 171 255 255 150 93 0 0 0
contenu liste
116 125 171 255 255 150 93 0 0 0
taille = 1
element recu
169 253 253 253 253 253 253 218 30 0
contenu liste
169 253 253 253 253 253 253 218 30 0
169 253 253 253 253 253 253 218 30 0
taille = 2
element recu
38 254 109 0 0 0 0 0 0 0
contenu liste
38 254 109 0 0 0 0 0 0 0
38 254 109 0 0 0 0 0 0 0
38 254 109 0 0 0 0 0 0 0
taille = 3
j'ai aussi essayé :
liste.add(liste.size(), d);a la place de
liste.add(d);
mais même résultat !
Est-ce que quelqu'un a une idée de la provenance du probleme?
Merci d'avance.

ralallalala C quand tu me tient...
Voilà, j'ai le même type de problème et je ne comprends pas trop pourquoi.
En fait, je programme l'algo A* en java et j'ai une méthode pour trouver les cases (noeud) suivantes dans mon terrain. Voici le code:
//Méthode de calcul des noeuds successeurs
public static void findSuccessors(Node n, String[][] tab){
int x=n.getX();
int y=n.getY();
int u=(x+1);
int r=y;
if (!GetTerrain.tab[u][r].equals(one)){
Node a=new Node(u,r);
//System.out.println(a);
successors.add(a);
System.out.println(successors);
}
int v=x;
int w=(y-1);
if (!GetTerrain.tab[v][w].equals(one)){
Node b=new Node(v,w);
//System.out.println(b);
successors.add(b);
System.out.println(successors);
}
int z=(x-1);
int t=y;
if (!GetTerrain.tab[z][t].equals(one)){
Node c=new Node(z,t);
successors.add(c);
System.out.println(successors);
}
int e=x;
int c=(y+1);
if (!GetTerrain.tab[e][c].equals(one)){
Node d=new Node(e,c);
successors.add(d);
System.out.println(successors);
}
Le problème est que lorsqu'il ajoute le nouveau noeud successeur, il écrase les suivants.
Un exemple sera plus parlant: je pars du noeud qui a pour coordonnées (4,3)
premier successeur (5,3) --> ma liste "successors" contient [(5,3)]
deuxième successeurs (3,3) --> ma liste "successors" contient desormais [(4,3);(4,3)]
troisième successeurs (4,2) --> ma liste "successors" contient desormais [(4,2);(4,2);(4,2)]
qutrième successeurs (4,4) --> ma liste "successors" contient desormais [(4,4);(4,4);(4,4);(4,4)]
Ce problème a pour conséquence que mon algo boucle a l'infini sauf si par hasard le derner noeud trouvé est le noeud à atteindre.
Je précise aussi que c'est mon premier code en java... Si vous avez besoin de plus de précision n'hésitez pas.
Merci pour votre aide.