import java.util.ArrayList;
public class bugs
{
public ArrayList<Integer> elements1;
public ArrayList<Integer> elements2;
public bugs(ArrayList<Integer> args)
{
elements1 = args;
elements2 = args;
}
public void change(int index, int value)
{
elements1.set(index, value);
}
public void reset()
{
elements1 = elements2;
}
public static void main(String[] a)
{
ArrayList<Integer> stuff = new ArrayList<Integer>();
stuff.add(1);
stuff.add(1);
stuff.add(1);
stuff.add(1);
bugs b = new bugs(stuff);
b.change(2, 999);
b.reset();
System.out.println(b.elements2);
}
}
Diese Ausgänge:Arraylisten nicht wie erwartet funktioniert
[1, 1, 999, 1]
Der zweite Array elements2
gibt es die Array elements1
in seine ursprüngliche Position zurückzusetzen, . Doch aus irgendeinem Grund elements1
-elements2
kopiert wird, Druck
[1, 1, 999, 1]
und nicht
[1, 1, 1, 1 ]
Warum denken Sie, es sollte '[1,1,1,1]' werden Druck? Beachten Sie, dass 'elements2',' elements1' und 'stuff' während der gesamten Laufzeit Ihres Programms das *** gleiche *** Objekt sind. Wenn Sie den Inhalt von eins ändern, ändert sich auch der Inhalt der anderen beiden. – luk2302
lesen Sie dies, bevor Sie sich bewegen http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html – emotionlessbananas
und für [1,1,1,1] müssen Sie zurücksetzen, bevor Sie 999 hinzufügen (eine Kopie erstellen) – emotionlessbananas