11.6 Die abstrakte Klasse Dictionary
 
Wir haben mit der Klasse Hashtable eine besondere Klasse für Wörterbücher (engl. dictionary) kennen gelernt. Ein Wörterbuch ist eine Datenstruktur, die Elementpaare (Schlüssel und Wert) miteinander assoziiert. Mit Wörterbuchproblem ist die Frage gemeint, wie zu einem gegebenen Schlüssel möglichst schnell der zugehörige Wert bestimmt werden kann. Für die Klasse Hashtable haben wir dies schon gesehen. Der Schlüssel wird als Zahl kodiert (Hashcode) und dient als Index für ein Array. Unter diesem Index ist eine Liste abgelegt, die Werte zu allen Schlüsseln mit demselben Hashcode enthält. Im Idealfall enthalten diese Listen nur jeweils ein Element. Andere Implementierungen von Wörterbüchern sind jedoch denkbar. So muss die Verbindung zwischen Schlüssel und Wert nicht zwingend über Hashfunktionen realisiert werden.
11.6.1 Zugriff und Abfrage
 
Die Klasse Dictionary ist eine abstrakte Klasse, die Operationen für Datenstrukturen anbietet, bei denen Objekte (also Schlüssel und Wert) miteinander assoziiert werden. Hashtable ist eine Unterklasse von Dictionary. Ein Schlüssel kann nur mit einem Wert assoziiert sein, allerdings kann unter mehreren Schlüsseln derselbe Wert abgelegt sein. Um Elemente in das Wörterbuch aufzunehmen, wird die put()-Methode verwendet.
|
abstract Object put( Object key, Object value )
Fügt den Schlüssel key mit dem verbundenen Wert value in das Wörterbuch ein. Sind entweder key oder value gleich null, wird eine NullPointerException ausgeworfen. |
|
abstract Object get( Object key )
Liefert das zu key gehörende Objekt zurück. Falls kein Wert mit dem Schlüssel verbunden ist, so liefert get()die null-Referenz. null kann niemals als echter Wert auftreten, da die Einfügemethode put() nur Schlüssel und Werte ungleich null zulässt. |
|
public abstract Object remove( Object key )
Zusätzlich zum Abfragen kann auch ein Schlüssel-Wert-Paar aus dem Wörterbuch entfernt werden. Die Methode gibt den vormals mit dem Schlüssel assoziierten Wert zurück. Falls der Schlüssel nicht im Wörterbuch vorkam, liefert die Methode null als Ergebnis und ändert das Wörterbuch nicht. |
11.6.2 Metainformationen
 
Neben den elementaren Operationen Einfügen, Abfragen und Löschen hält die Dictionary-Klasse noch ein paar Zusatzfunktionen bereit: die Metainformationen. So liefert isEmpty() den Wert true, wenn keine Elemente im Wörterbuch gespeichert sind. Mit size() kann die Anzahl der Einträge abgefragt werden:
|
abstract boolean isEmpty()
true, falls keine Einträge im Wörterbuch enthalten sind. |
|
abstract int size()
Gibt zurück, wie viele Schlüssel beziehungsweise Elemente aktuell im Wörterbuch enthalten sind. |
11.6.3 Iterationen über die Elemente
 
Um über alle Elemente der Datenstruktur zu wandern, liefert die Methode keys() eine Enumeration zurück, die uns erlaubt, alle Schlüssel abzugehen. Auch die Werte können durchlaufen werden. So liefert die Methode elements() eine Enumeration für alle Werte.
|
abstract Enumeration keys()
Liefert eine Aufzählung sämtlicher Schlüssel. |
|
abstract Enumeration elements()
Liefert eine Aufzählung sämtlicher Werte. |
|