Anlässlich meines Studiums habe ich gelegentlich auch programmiert. Teile meiner Ergebnisse sind hier zu finden.
Auf einer eigenen Seite ist ein Demonstrations-Applet sowie mein Faktorisierungs-Programm erläutert.
Der Spam-Filter ist auf einer eigenen Seite erläutert.
Meine LaTeX-Packages sind auf einer eigenen Seite erläutert.
Anlässlich der Behandlung des B-Baumes in der
DBS1-Vorlesung
habe ich eine Implementaton eines solchen in Java begonnen.
Es handelt sich dabei strenggenommen um einen B*-Baum,
wobei auf die sequentielle Datei verzichtet wurde, da sowieso
alles als Referenzen behandelt wird.
Der Baum lebt also nur im Hauptspeicher (bzw. kann als
Ganzes gelesen oder geschrieben werden).
Der Baum implementiert das java.util.Map
-Interface, so
dass man mit den Standard-Methoden darauf zugreifen kann.
Es kann ein beliebiges Sortierkriterium verwendet werden,
gegeben durch einen java.util.Comparator
, mit dem
die Schlüssel verglichen werden. Die einzige Bedingung an
die Schlüssel ist also, dass sie von dem Comparator akzeptiert
werden.
Als Werte können ebenfalls beliebige Objekte verwendet werden
(die null
-Referenz ist nicht erlaubt).
Beim Iterieren über die Schlüssel, Werte, oder Schlüssel-Wert-Paare wird die durch das Sortierkriterium gegebene Reihenfolge verwendet.
Bisher implementiert sind
put(Schlüssel, Wert))
put(Schlüssel, Wert))
get(Schlüssel)
keySet()
bzw. keySet.iterator()
)values()
bzw. values().iterator()
)entrySet()
bzw. entrySet.iterator()
)clear()
)size()
)toString()
eine Text-Darstellung
des Baumes sowie mit printXML(Ziel, 0)
eine XML-artige
Darstellung des Baumes. (Ich habe bisher kein Schema oder eine DTD
dafür gebastelt, auch kann ich es nicht parsen - das ist nur zu
Debug-Zwecken entwickelt worden.)Fehlen tut bisher:
remove(Schlüssel)
(das Mergen von Knoten habe ich noch nicht implementiert)Der Haken an der Sache ist (neben der bisher fehlenden Lösch-Funktion): Ich habe das ganze auf Esperanto implementiert - die Bezeichner und Kommentare sind in dieser Sprache gehalten (auf die Schlüsselwörter und die Standard-API habe ich keinen Einfluss, das bleibt Englisch). (Auf Englisch und Deutsch gibt es garantiert schon massenhaft B-Bäume ...)
Um das Verständnis etwas zu erleichtern, habe ich begonnen, die verwendeten Fachwörter mit Übersetung zu sammeln. In der main()-Methode der Klasse werden sie als Test in ein Exemplar des Baumes eingefügt, und von diesem dann die XML- und toString()-Darstellung ausgegeben.
Neben dem Quelltext habe ich auch noch die JavaDoc-Doku im Angebot.