2016-11-05 28 views
0

Meine Frage ist, mit Java ist es möglich, eine Sammlung wie einen Baum zu haben. Lassen Sie einen Knoten im Baum in einer Variablen speichern. Es wäre das selbe objektadressierte (in meinem Verständnis), also bedeutet das Ändern der Daten in dem Knoten unter Verwendung der lokalen Variablen auch die Daten in der Sammlung ändern würde?Ändern Sie den Wert in einer Sammlung mit lokalen Variablen

+1

Warum testen Sie es nicht einfach? Aber wenn Sie zwei Verweise auf dasselbe Objekt haben, wird die Änderung des Status des eindeutigen Objekts mit einer Referenz diese ändern, und die andere Referenz verweist immer noch auf dasselbe modifizierte Objekt. –

Antwort

0

Die lokale Variable enthält einen Verweis auf den Knoten. Daher ändern Daten in Ihrer lokalen Variablen tatsächlich die Daten in dem Objekt, auf das sie verweist. In diesem Fall wird auch der Knoten in Ihrem Baum geändert, da es sich um dasselbe Objekt handelt .

Mit freundlichen Grüßen

Alex

0

Die Antwort irgendwie ist. Angenommen, Sie haben die Variable var und ihre Adresse ist in der Sammlung things gespeichert. Wenn Sie dann etwas tun wie: var = some_var, werden die Daten in der Sammlung nicht geändert. Dies liegt daran, dass Sie die Adresse von var in der Zuweisung überschreiben. Wenn Sie jedoch var irgendwie ändern würden, würden sich beide ändern. Dies geschieht, weil die Adresse gleich bleibt, so dass Sie immer noch in den richtigen Speicher schreiben. z.B. var.field = some_data würde things[var].field ändern.

Aus diesem Grund ist es in der Regel ratsam, eine Kopie von var in things zu laden, damit wir sie nicht versehentlich verbunden lassen. Die Leute lassen oft zusammenhängende Dinge so, ohne es zu merken, und modifizieren dann die Variable, ohne zu merken, dass sich die Sammlung ebenfalls geändert hat.

Verwandte Themen