Ich versuche, Objekte (in diesem Beispiel, um es einfach Strings zu halten) zu Arraylists hinzufügen, die als Arraylist gesammelt werden. Hier ist der Code:Java ArrayList von ArrayLists verhält sich seltsam beim Hinzufügen von Objekten
public static void main(String[] args) {
ArrayList dummylist = new ArrayList();
ArrayList<ArrayList<String>> dummylistlist = new ArrayList<ArrayList<String>>();
for (int j=0; j< 2; j++){
dummylistlist.add(dummylist);
String text = "test";
dummylistlist.get(j).add(text);
}
for (int j=0; j< 2; j++){
System.out.println("arraylist "+j+" has size "+dummylistlist.get(j).size());
System.out.println("Arraylist No."+j+" is ="+dummylistlist.get(j));
}
}
Und der Ausgang ist:
arraylist 0 has size 2
Arraylist No.0 is =[test, test]
arraylist 1 has size 2
Arraylist No.1 is =[test, test]
Aber ich erwartet, dass es sein:
arraylist 0 has size 1
Arraylist No.0 is =[test]
arraylist 1 has size 1
Arraylist No.1 is =[test]
Warum wird die Methode hinzufügen (Text) fügt den „Test "String zu allen Unterlisten, damit es einmal in jeder Schleife hinzugefügt wird? Ich verstehe nicht. Können Sie mir helfen, meinen Code zu korrigieren, um die letztgenannte Ausgabe zu erreichen? Vielen Dank im Voraus.
Rufen Sie nicht 'dummlistlist.add (dummylist);' Sie haben nur eine Liste, die 'Dummylist' genannt wird. – Kajal
Du fügst dieselbe Liste zweimal in deine "Liste" ein und fügst deshalb "test" zweimal in "dummylist" ein. –