Hallo zusammen.
Ich versuche Objekte (NavigationNodes) in ein TreeSet zu speichern.
Jedes Objekt hat einen Primärschlüssel (aus einer DB), dessen Eindeutigkeit kann also festgestellt werden.
Die NavigationNodes haben eine CompareTo Methode, die Anhand des Primärschlüssels Werte zurückgibt. Das TreeSet sollte ja jetzt mit Hilfe der CompareTo Methode Duplikate feststellen und diese dann nicht ins TreeSet hinzufügen, was aber leider nicht der Fall ist.
Nachfolgend meine Debugausgaben und entsprechende Kommentare:
Füge das Erste Objekt / NavigationNode in das TreeSet ein (Es existieren aber schon 5 andere Objekte (auch NavigationNodes) im TreeSet
Auflistung der bereits existierenden Objekte im TreeSet:
Da ja schon 5 Objekte im TreeSet existieren würde ich ja jetzt erwarten, daß
5 mal die Compare Methode aufgerufen wird, aber:
... sie wird nur 2 mal aufgerufen ... Der neue Knoten wird nur mit Knoten 11 und 7 verglichen. Die Knoten 12, 61 und 92 werden nicht verglichen.
Gleiches Spiel setzt sich fort wenn ich weitere Knoten hinzufüge:
Interessanter Weise (für micht) habe ich das gleiche Bsp schon mit Strings nachprogrammiert (um Konzeptfehler zu finden), da hat dann aber alles sauber funktioniert.
Ich versuche Objekte (NavigationNodes) in ein TreeSet zu speichern.
Jedes Objekt hat einen Primärschlüssel (aus einer DB), dessen Eindeutigkeit kann also festgestellt werden.
Die NavigationNodes haben eine CompareTo Methode, die Anhand des Primärschlüssels Werte zurückgibt. Das TreeSet sollte ja jetzt mit Hilfe der CompareTo Methode Duplikate feststellen und diese dann nicht ins TreeSet hinzufügen, was aber leider nicht der Fall ist.
Nachfolgend meine Debugausgaben und entsprechende Kommentare:
Füge das Erste Objekt / NavigationNode in das TreeSet ein (Es existieren aber schon 5 andere Objekte (auch NavigationNodes) im TreeSet
Code:
MSG: Versuche folgenden Knoten in Treeset zu adden (durch User): Knoten [1]: Knowledgebase ;Vorgaenger: 0 ;Ref: ]
Code:
MSG: Folgende Knoten sind schon in Treeset enthalten: MSG: ... Knoten [7]: KLB Administration ;Vorgaenger: 1 ;Ref: ] MSG: ... Knoten [11]: User Administration ;Vorgaenger: 7 ;Ref: Adminformular.jsp] MSG: ... Knoten [12]: Beitrags- Administration ;Vorgaenger: 7 ;Ref: Statistikformular.jsp] MSG: ... Knoten [61]: AdminNavigation ;Vorgaenger: 7 ;Ref: AdminNavigation.jsp] MSG: ... Knoten [92]: Logfile ;Vorgaenger: 7 ;Ref: AdminLogfile.jsp]
5 mal die Compare Methode aufgerufen wird, aber:
Code:
MSG: [NavigationNode.compareTo] ... -->11 :: 1 MSG: [NavigationNode.compareTo] ... -->7 :: 1
Gleiches Spiel setzt sich fort wenn ich weitere Knoten hinzufüge:
Code:
MSG: Knoten Knoten [1]: Knowledgebase ;Vorgaenger: 0 ;Ref: ] wird in Treeset geschrieben (über User) ... MSG: Versuche folgenden Knoten in Treeset zu adden (durch User): Knoten [5]: PDM (CDB) ;Vorgaenger: 0 ;Ref: ] MSG: Folgende Knoten sind schon in Treeset enthalten: MSG: ... Knoten [1]: Knowledgebase ;Vorgaenger: 0 ;Ref: ] MSG: ... Knoten [7]: KLB Administration ;Vorgaenger: 1 ;Ref: ] MSG: ... Knoten [11]: User Administration ;Vorgaenger: 7 ;Ref: Adminformular.jsp] MSG: ... Knoten [12]: Beitrags- Administration ;Vorgaenger: 7 ;Ref: Statistikformular.jsp] MSG: ... Knoten [61]: AdminNavigation ;Vorgaenger: 7 ;Ref: AdminNavigation.jsp] MSG: ... Knoten [92]: Logfile ;Vorgaenger: 7 ;Ref: AdminLogfile.jsp] MSG: [NavigationNode.compareTo] ... -->11 :: 5 MSG: [NavigationNode.compareTo] ... -->7 :: 5 MSG: [NavigationNode.compareTo] ... -->1 :: 5
Comment