Objektbaum durchlaufen

kirbylix

Mitglied
hi

ich möchte gern einen dynamisch erstellten Objektbaum durchlaufen, der sich wie folgt aufbaut:

Klasse A, enthält:
Attribute

Klasse B, enthält:
Attribute
ArrayList<KlasseA>

Klasse C, enthält:
ArrayList <KlasseA>

Klasse B & C erben von Klasse A

in den ArrayListen kann ich je nach Lust und Laune Klasse A, B oder C hinzufügen
das Rootelment ist die Klasse C.

Ich möchte gerne mit dieser methode dann gerne 2 Objektbäume miteinander vergleichen und bei unterschiedlichen oder fehlenden Knoten/ Attribute arbeiten können.
Ich hoffe ich hab mein Problem genau erklärt und ihr könnt mir helfen oder habt eine bessere Lösung für mich

danke schonmal im voraus
 
Zuletzt bearbeitet:
Hast du bereits Lösungsansätze? Wir kauen dir hier nicht jede Codezeile vor...
Tipp: einen Baum kann man entweder rekursiv oder iterativ durchlaufen, je nach dem macht das eine oder andere Sinn.
 
ich habe schon versucht in der Klasse A eine Methode zu schreiben die das Objekt returnt die ich dann in der Klasse B & C überschreibe, aber das wars auch nicht.
 
Evtl. wäre es hilfreich, den tieferen Sinn hinter dem ganzen zu erläutern.
Enthalten die Lists in B und C - zumindest teilweise - die selben Objekte?
 
Ich würde an deiner Stelle für alle Klassen die
Code:
public boolean equals(Object)
Methode überschreiben.
In der Klasse A werden dann z.B. alle gemeinsamen Properties verglichen und die Klasse des 2. Objektes.
In den Klassen B und C rufst du erstmal den Vergleich der Basisklasse auf, ist dieser false enthalten die Objekte entweder unterschiedliche Daten oder sind gar von einem anderen Typ.
Sollte der Vergleich in der Basisklasse true ergeben kannst du über die Elemente der Listen iterieren und für jedes Element dann wieder
Code:
equals
aufrufen

Solltest du wirklich genau an der Stelle eingreifen möchten, an der 2 Objekte dann nicht die gleichen Daten oder Listen enthalten kannst du dafür ja z.B. einfach einen Vergleich auf false in der
Code:
equals
Methode setzen und dort dann deinen Code ausführen.
 
Zuletzt bearbeitet:
@Micheal
der Baum enthält dann ein Strukturverzeichnis eines Ordners
Klasse A -> Datei
Klasse B -> Programm
Klasse C -> Ordner

ich muss die 2 Ordner miteinander vergleichen (falls ein Ordner/ Datei fehlt/ hinzugefügt oder das Änderungsdatum höher ist soll ein Attribut geändert werden) und die ID (Attribut in Datei) eines Knoten (Datei/ Ordner/ Programm) soll im Baum2 für den selben Knoten übernohmen werden.

@D4rkscr43m
ich versteh noch nicht ganz was du meinst, aber ich schau mal was sich machen lässt
 
Sollen dann bei den Objekten in beiden Bäumen die Attribute identisch sein? Kannst Du dann nicht einfach dasselbe Objekt in beide Bäume stecken?
 
Baum1 lies ich aus einem XML-File ein, das die alte strucktur enthält
in Baum2 lies ich das "neu" aktuelle Verzeichnis ein
und jetzt will ich beide vergleichen und ich muss für später, die ID der Dateien/ Ordner in Baum1 den selben Dateien/ Ordner in den Baum2 übertragen
 

Zurück
Oben