Referenztyp kopieren nicht refenenzieren ?!

donchris

Aktives Mitglied
Ich habe folgendes Problem: Ich muss eine Art Stack für Objekte (typ Baum) implementieren und diese Bäume können aus Bäumen erzeugt werden ... ich habe das implementiert, doch in dem Stack sind alle Objekte gleich. Wenn ich statt Baum den Wertetyp Int verwende und verschiedene Integer speicher, dann funktioniert es ohne Probleme.

Nun ich glaube, dass ich Probleme in der Klasse Baum habe:

Java:
/*Die Klasse Baum kann per Konstruktor aus einem alten Baum erstellt werden, doch mein Problem ist, dass der Baum nicht erstellt sonder referenziert wird */

class Baum{
int[][] properties; //Hier werden alle Eigenschaften gespeichert-eine vereinfachte Version (Der Übersichtlichkeit zu liebe)
public Baum(Baum b){
this.properties = b.properties; //Hier werden die Werte nicht kopiert, sondern nur referenziert <--- mein PROBLEM.
}
}

Ich habe per google erfahren, dass ich per deep copy Kopien anfertigen kann, aber leider hat das nichts geholfen und per "new" habe ich nicht wirklich eine Idee, wie ich es hier einsetzten kann, da ich ja in der Implementierung selbst die Implementierung nicht implementieren kann - das wäre ja eine rekursive Endlosschleife, oder ist dies Möglich ?!

mfg
donchris
 
Zuletzt bearbeitet von einem Moderator:

Ark

Top Contributor
Tja, du kannst die tatsächliche Struktur von properties jetzt nicht einfach wegabstrahieren. ;)

Wenn properties tatsächlich ein int[][] ist, dann schreibe so was wie das hier:
Java:
this.properties = new int[b.properties.length][];
for(int i=0;i<this.properties.length;i++){
    properties[i] = Arrays.copyOf(b.properties[i], b.properties[i].length);
}
Ansonsten, also wenn properties nicht einfach nur ein int[][] ist, musst du mal die dazugehörige Klasse zeigen (oder mogels Tipp folgen :D).

Ark
 

donchris

Aktives Mitglied
Tja, du kannst die tatsächliche Struktur von properties jetzt nicht einfach wegabstrahieren. ;)

Wenn properties tatsächlich ein int[][] ist, dann schreibe so was wie das hier:
Java:
this.properties = new int[b.properties.length][];
for(int i=0;i<this.properties.length;i++){
    properties[i] = Arrays.copyOf(b.properties[i], b.properties[i].length);
}
Ansonsten, also wenn properties nicht einfach nur ein int[][] ist, musst du mal die dazugehörige Klasse zeigen (oder mogels Tipp folgen :D).

Ark
Danke ! Das hat's gelöst. Aber warum muss man hier alle Elemente nach einander durchgehen und kann nicht einfach den "Container" kopieren ?
 

Ark

Top Contributor
Mehrdimensionale Arrays sind Arrays von Arrays (usw.). Würde man also nur mit [c]System.arraycopy()[/c] (oder wie das heißt) alle properties übertragen, so würde man zwar ein neues Array (1. Dimension) erzeugen, aber dieses Array würde wieder nur die Referenzen(!) auf die enthaltenen Arrays (2. Dimension) enthalten.

Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Polymorphie Referenztyp ungleich Objekttyp Java Basics - Anfänger-Themen 6
H Was ist ein Referenztyp? Java Basics - Anfänger-Themen 3
G variable kopieren bzw. woanders benutzen Java Basics - Anfänger-Themen 6
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
A BinaryTree komplett kopieren Java Basics - Anfänger-Themen 7
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
J Zweidimensionales array kopieren und in eindimensionales überführen Java Basics - Anfänger-Themen 304
F Input/Output Files von A nach B kopieren Java Basics - Anfänger-Themen 11
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
S Input/Output Vom Netzwerk kopieren Java Basics - Anfänger-Themen 6
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Objekt (tief)-kopieren Java Basics - Anfänger-Themen 2
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
TomatenBrot447 Wie kann man ein Objekt kopieren? Java Basics - Anfänger-Themen 11
W Datentypen Kopieren von Arrays Java Basics - Anfänger-Themen 4
M Input/Output Datei in Laufzeit-JAR kopieren Java Basics - Anfänger-Themen 6
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
B Dateien aus dem "resource" - Folder kopieren in Verzeichnis Java Basics - Anfänger-Themen 9
B Kopieren von Dateien mit Adminberechtigungen Java Basics - Anfänger-Themen 14
D 2 D Arrays kopieren Java Basics - Anfänger-Themen 3
S double[x] , double[y] zu Point[] points kopieren? Java Basics - Anfänger-Themen 15
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
C Datei identisch Kopieren Java Basics - Anfänger-Themen 3
E Textdatei kopieren funktioniert nicht Java Basics - Anfänger-Themen 12
L Source Code in Editor kopieren Java Basics - Anfänger-Themen 5
S ods-Dateo kopieren Java Basics - Anfänger-Themen 12
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
J Klassen Fehler Datei kopieren - was mache ich falsch Java Basics - Anfänger-Themen 19
M Kopieren einer .wav Datei Java Basics - Anfänger-Themen 6
J Dienst zum Text kopieren und Variable hochzählen Java Basics - Anfänger-Themen 7
V Zwei Array in einem kopieren Java Basics - Anfänger-Themen 3
T TreeSet sortiert in ein anderes kopieren Java Basics - Anfänger-Themen 2
B Methode zum kopieren von Arrays Java Basics - Anfänger-Themen 9
C Referenz auf ein Objekt kopieren! Java Basics - Anfänger-Themen 2
J Text kopieren an bestimmter Stelle Java Basics - Anfänger-Themen 8
T ArrayList kopieren Java Basics - Anfänger-Themen 10
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
S Dateien in RAM kopieren und ausführen? Java Basics - Anfänger-Themen 4
B Dateien kopieren, entpacken, XML auslesen! Java Basics - Anfänger-Themen 7
M Array Inhalt kopieren Java Basics - Anfänger-Themen 3
D Mehrere Datein kopieren Java Basics - Anfänger-Themen 10
H Interface JTextPane html formatiert kopieren Java Basics - Anfänger-Themen 2
Dogge Datei kopieren Java Basics - Anfänger-Themen 13
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
S Dateien mittels Path(s) kopieren und umbenennen. Java Basics - Anfänger-Themen 4
C Erste Schritte Integer Werte in Array kopieren Java Basics - Anfänger-Themen 21
R Datei kopieren: Performance erhöhen Java Basics - Anfänger-Themen 10
B Erste Schritte Dateien ueber Netzwerk kopieren Java Basics - Anfänger-Themen 2
G Nur benötigte Klassen in executable jar kopieren! Java Basics - Anfänger-Themen 6
S File Kopieren Path Pfad Problem Java Basics - Anfänger-Themen 3
T Methoden Array kopieren: Wie geht das? Java Basics - Anfänger-Themen 20
R Kopieren einer Datei Java Basics - Anfänger-Themen 18
G Kopieren von Array-Daten Java Basics - Anfänger-Themen 6
A Datein kopieren: File oder xcopy? Was ist schneller? Java Basics - Anfänger-Themen 10
L Datei kopieren Java Basics - Anfänger-Themen 11
F Text aus Textfeld1 in Textfeld 2 kopieren Java Basics - Anfänger-Themen 5
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
G Text aus TextArea in Zwischenablage kopieren Java Basics - Anfänger-Themen 6
J Jar kopieren und einfügen Java Basics - Anfänger-Themen 4
X Zeile in Tabelle kopieren und in andere einfügen Java Basics - Anfänger-Themen 6
N Kopieren einer ArrayListe Java Basics - Anfänger-Themen 3
D In Zwischenablage kopieren Java Basics - Anfänger-Themen 8
C Datei kopieren - Erweiterung java.io.File Java Basics - Anfänger-Themen 2
S datein kopieren Java Basics - Anfänger-Themen 5
N Vectorinhalt kopieren Java Basics - Anfänger-Themen 4
K Datentypen Bestimmten Part aus String kopieren mit RegEx Java Basics - Anfänger-Themen 4
B .class datei kopieren und auführen Java Basics - Anfänger-Themen 8
C Bilder von Server zu Server kopieren über Webdav(Sardine) Java Basics - Anfänger-Themen 5
F Object kopieren in GWT Java Basics - Anfänger-Themen 2
D HashMap mit Inhalt kopieren Java Basics - Anfänger-Themen 8
S element in Array kopieren Java Basics - Anfänger-Themen 12
N Mac - Java Code aus dem Forum kopieren Java Basics - Anfänger-Themen 12
S Array im Konstruktor kopieren Java Basics - Anfänger-Themen 8
A 2 arrays zu einem Kopieren Java Basics - Anfänger-Themen 2
H Datei kopieren per Eingabe Java Basics - Anfänger-Themen 11
G Array kopieren Java Basics - Anfänger-Themen 4
F Verschachtelte Arrays kopieren und überschreiben Java Basics - Anfänger-Themen 4
S JLabel clonen/kopieren Java Basics - Anfänger-Themen 2
F Verzeichnisse und Dateien kopieren Java Basics - Anfänger-Themen 3
K Spielbrett kopieren Java Basics - Anfänger-Themen 4
H Datei in den Windows-Programmordner kopieren Java Basics - Anfänger-Themen 5
D Objektehierarchie kopieren Java Basics - Anfänger-Themen 3
B Teile einer Image in neue Image kopieren Java Basics - Anfänger-Themen 4
S Grosse Dateien kopieren/Verschieben Java Basics - Anfänger-Themen 14
H Liste kopieren Java Basics - Anfänger-Themen 22
G POI: Zelle aus einer Tabelle kopieren und in einr anderen einfügen Java Basics - Anfänger-Themen 5
S Dateien von einem Ordner in den anderen kopieren Java Basics - Anfänger-Themen 2
S String nach erstem Whitespace kopieren Java Basics - Anfänger-Themen 3
B Teil eines Bild kopieren bei verschiedenen Zoomstufen Java Basics - Anfänger-Themen 3
M "spezieller" Zeilenumbruch beim Kopieren Java Basics - Anfänger-Themen 3
J ArrayList<Point> in eine neue ArrayList<Point> kopieren Java Basics - Anfänger-Themen 8
K Klonen und Kopieren von Dateien Java Basics - Anfänger-Themen 6
R DerbyDB nach MS Access kopieren Java Basics - Anfänger-Themen 41

Ähnliche Java Themen

Neue Themen


Oben