Verständnis-Problem: Zweidimensionale ArrayList

robbob

Grünschnabel
Servus Jungens,

ich steh grad aufm Schlauch und frag mich, warum der folgende Code
Code:
                ArrayList<Integer> al1 = new ArrayList();
		ArrayList<ArrayList> al2 = new ArrayList();
		al1.add(1);
		al1.add(2);
		al1.add(3);
		al2.add(0,al1);
		al1.clear();
		al1.add(4);
		al1.add(5);
		al1.add(6);
		al2.add(1,al1);
		System.out.println(al2);

zu dieser Ausgabe führt: [[4, 5, 6], [4, 5, 6]]

und nicht zu dieser: [[1, 2, 3], [4, 5, 6]]

Wo ist mein Verständnis-Problem?
Wie müßte es denn richtig aussehen?

Vielen Dank schon einmal!!
robbob
 
Na weil du eine Liste machst, sie mit 1, 2, 3 befüllst, sie leerst, sie mit 4, 5, 6 befühllst und 2 mal hinzufügst.

Java:
List<List<Integer>> al2 = new ArrayList();
List<Integer>[] als = new ArrayList[2];
als[0] = new ArrayList();
als[1] = new ArrayList();

als[0].add(1);
als[0].add(2);
als[0].add(3);

als[1].add(4);
als[1].add(5);
als[1].add(6);

al2.add(als[0]);
al2.add(als[1]);

System.out.println(al2);

VHidT.
 
Hallo,

es ist wie Kai sagt, du arbeitest auf dem gleichen objekt. Wenn du die Liste 1 der anderen Liste hinzufügst, wird keine Kopie der Liste sondern der Referenz erstellt.

Gruß

Sascha
 
Hey Jungs,

danke euch! Alles klar, da war also mein Gedanken-Fehler, geht jetzt.

...man, ihr seid ja auch zu unchristlichen Zeiten im Forum unterwegs?! :)

Gruß,
robbob
 

Neue Beiträge

Zurück