Rechercher : dans
Par :

[JAVA] Probleme ajout element dans ArrayList

Dernière réponse le 17 mar 2009 à 18:56:28 koko, le 17 mar 2009 à 18:01:41 
 Signaler ce message aux modérateurs

Bonjour à tous,

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.
Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « [JAVA] Probleme ajout element dans ArrayList » dans :
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la liste 1....
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Javascript - Les tableaux VoirIntroduction à la notion de tableau Les variables de Javascript ne permettent de stocker qu'une seule donnée à la fois. Or, étant donné qu'il est souvent utile de manipuler de nombreuses données, le concept de variable se révéle parfois...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...

1

jamian, le 17 mar 2009 à 18:07:07

Salut,

C'est normal : tu inclues trois fois le même tableau dans ton arrayList (l'ajout d'un tableau dans un arraylist ne copie pas ledit tableau...)

Répondre à jamian

2

koko, le 17 mar 2009 à 18:23:43

Tout d'abord merci de ta réponse.

Mais je pige pas tout, comment ça j'ajoute 3 fois le même tableau? puisque à chaque fois d est différent...
Sinon comment faire alors pour pouvoir ajouter à la suite de la arrayList un nouvel élément?

Merci d'avance.

Répondre à koko

3

jamian, le 17 mar 2009 à 18:34:26
  • +1

Salut,

N'oublie pas qu'en Java, un tableau est un objet et que donc une variable tableau désigne une référence à cet objet.
Je suppose que dans ton programme principal, tu créées un tableau, en modifie les cases, l'ajoute à ton ArrayList, remodifies ton tableau initial, le re-ajoute, etc...
C'est là que ça ne va pas : c'est le même tableau que désigne ta variable et la première case de ton arrayList.
Il faut donc qut tu crées un nouveau tableau à chaque fois que tu veux ajouter quelque chose à ton arrayList.

Répondre à jamian

4

 koko, le 17 mar 2009 à 18:56:28

Merciiiiiiiiiiii tout fonctionne impec'

ralallalala C quand tu me tient...

Répondre à koko