Hallo zusammen.
Ich habe ein Treeset, füge Daten + Schlüssel hinein, aber ich kann den erwartenden Datensatz nicht finden
Zuerst die Klasse für den Treesetschlüssel (nein, das ist kein PHP Code ) :
Mein Hauptanliegen betrifft aber das Treeset selbst. Nachfolgend habe ich die Fehlerbeschreibung als Kommentar in den Codeauszug geschrieben
Edit: Liebe Admins: Bitte in richtiges Forum verschieben
Ich habe ein Treeset, füge Daten + Schlüssel hinein, aber ich kann den erwartenden Datensatz nicht finden
Zuerst die Klasse für den Treesetschlüssel (nein, das ist kein PHP Code ) :
PHP Code:
public static void createFolderTreeView(String attributName, User user, HttpServletRequest request) throws KnowledgebaseException
{
/** Klasse, die nur in der Funktion createFolderTreeView verwendet wird.
Sie dient der Sortierung der angezeigten Ordner.
*/
class Key implements Comparable
{
int id;
String name;
public Key(int id, String name)
{
this.id = id;
this.name = name;
}
@Override
public String toString()
{
return this.name + ": " + this.id;
}
@Override
public int compareTo(Object o)
{
Key otherKey = (Key) o;
// Solange die Knoten unterschiedliche IDs besitzen, wird nach deren Benennung sortiert
// System.out.println(name + " " + id + "<-->" + otherKey.name + " " + otherKey.id);
if (otherKey.id != this.id)
{
if (name.compareTo(otherKey.name) != 0)
return name.compareTo(otherKey.name);
else
return 1;
}
else
return 0;
}
@Override
public boolean equals(Object o)
{
if (this.getClass() != o.getClass())return false;
Key otherKey = (Key) o;
if (otherKey.id != this.id) return false;
else return true;
}
@Override
public int hashCode()
{
return this.id;
}
}
Mein Hauptanliegen betrifft aber das Treeset selbst. Nachfolgend habe ich die Fehlerbeschreibung als Kommentar in den Codeauszug geschrieben
PHP Code:
// Hier lese ich alle Schlüssel aus:
Iterator <Key> keyIds = allNodes.keySet().iterator();
// Alle Schlüssel durchlaufen
while (keyIds.hasNext())
{
Key key = keyIds.next();
// Hier ist das eigenliche Problem, Die Variable n ist NULL, weil keine übereinstimmenden Schlüssel gefunden werden, obwohl ich die Schlüsselmenge durchiteriere und einen Schlüssel aus der Iterationsmenge in der Iterationsmenge suche
TreeNode n = allNodes.get(key);
// containsKey gibt hier false zurück, der angegebene Schlüssel ist also nicht im Treeset vorhanden
System.out.println(allNodes.containsKey(key));
// Wenn ich mir aber den Spass mache, alle Schlüssel nochmals durchzuiterieren und dann mit dem Schlüssel vergleiche, dann liefert equals true und compareTo 0 zurück.
Iterator <Key> itr = allNodes.keySet().iterator();
while (itr.hasNext())
{
Key kk = itr.next();
System.out.println(kk + " <--> " + key + " .... " + kk.equals(key) + " .... " + kk.compareTo(key));
}
Edit: Liebe Admins: Bitte in richtiges Forum verschieben
Comment