Dachte, man könnte z.B. auch eine verschachtelte Hashmap
benutzen (vgl. Adjazenzliste bei Graphen).
Eine Hashmap ist aber absolut ungeeignet. Da musst du ja erst recht immer linear alle Einträge durchlaufen, da du ja nur immer Elemente aus der Hashmap direkt holen kannst, die GENAU ihrem Schlüssel entsprechen. Beim B-Baum willst du aber üblicherweise den Kindknoten haben, dem der nächstgrößere/-kleinere Schlüssel entspricht. Das kannst du bei der Hashmap nur erreichen, in dem du die Schlüssel der Hashmap einzeln durchsuchst. Damit geht aber der Sinn einer Hashmap (direkter Zugriff auf ein Element in konstanter Zeit) komplett verloren.
Wenn ich eine Knotenklasse erstelle und immer wieder Knoten
einfüge, also immer neue Instanzen des Objektes erstelle. Wie
kann ich die Objekte ansprechen bzw. voneinander
unterscheiden? In einer Liste/Vektor speichern und dann die
Liste/Vektor bei jeder Operation mit einem Iterator/Enumerator
durchsuchen?
Richtig. Wenn du die Knoten aufsteigend in der Liste sortierst, dann kannst du Binärsuche verwenden, um den richtigen Knoten zu identifizieren. Damit kannst du die Einträge eines Knotens mit logarithmischer Komplexität durchsuchen, also deutlich schneller als mit linearer Suche mittels Iterator/Enumerator.
Oder kann ich die Objekte dynamisch benamen?
Wie benennen? Du unterscheidest die Kind-Knoten (=Teilbäume) anhand der Schlüssel. Es macht also Sinn, den Schlüsselwert in der Knotenklasse zu speichern. Dann hat ein Knoten also eine Liste von Kindknoten, die du anhand ihrer Schlüssel unterscheidest.