Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe ein Array, das immer wieder seinen Zustand ändert.
Ich möchte jeden Zustand in einem Stack speicher, damit ich diese später wieder abrufen kann.
Aber leider funktioniert das nicht. Die Objekte im Stack ändern immer wieder ihren Zustand, so dass im Stack nur der letzte Zustand gespeichert bleibt.
Code:
class Buh
int[] zuSpeichern;
Stack<int[]> stack = new Stack<int[]>();
private void aendereZustand(){
// int[] ändert seinen Zustand
stack.push(zuSpeichern);
}
Jemand 'ne Idee, wie ich das Problem löschen kann?
Ich habe auch schon probiert in einer anderen Klasse stack zu füllen und int[] über getter Methode zu holen.
War aber auch nichts...
Ist das Problem klar? Was kann ich tun?
Und du musst eine Kopie erstellen, wenn du das Integer[] in dem Stack speicherst. Sonst speicherst du einfach immer wieder die gleiche Referenz auf das Integer[] darin.
Ich denke, int[] kann man schon verwenden. Allerdings muss, wie bereits gesagt, das Array vorher kopiert werden. Wenn es zu Performanceproblemen kommt, sollte man wohl darüber nachdenken, ob man sich eventuell nur die Änderungen speichert.
Ich denke, int[] kann man schon verwenden. Allerdings muss, wie bereits gesagt, das Array vorher kopiert werden. Wenn es zu Performanceproblemen kommt, sollte man wohl darüber nachdenken, ob man sich eventuell nur die Änderungen speichert.
Nein. Arrays musst du wie ganz normale Objekte behandeln. In Java werden alle Objekte nie direkt kopiert, sondern lediglich die Referenzen auf die Objekte werden aufbewahrt/kopiert. Echte Kopien kann man nur erzeugen, indem man neue Objekte anlegt (das macht man mit new) und diese mit den gleichen Werten füllt wie das Original (um die Werte in einem Array zu kopieren, gibt es z.B. System.arraycopy()).
Statt neuanlegen und System.arraycopy tut's bei Arrays auch ein 'clone'. (Arrays sind so ziemlich der einzige Fall, wo die "clone"-Methode wirklich sinn macht und verwendet werden kann...)