|
19.02.2010
Hashtable (Paartabelle)
Die Hashtable (Schlüssel-Wert-Tabelle) ist ähnlich wie die Liste eine einfache Datenstruktur, mit der sich beliebig viele Werte speichern lassen. Anders als bei der Liste besitzen die Einträge einer Hashtable keinen Index, sondern einen individuellen Schlüssel über den der Zugriff auf den Wert erfolgt. Die Reihenfolge der Werte spielt somit keine Rolle. Bei der Hashtable kann nicht nur der Wert, sondern auch der Schlüssel ein fester Wert, eine Variable, Konstante oder ein Objekt sein.
Hashtables enorm hilfreich wenn es darum geht, Werte zu verarbeiten, die intern in einer anderen Form verarbeitet werden als sie extern z.B. auf der Oberfläche dargestellt werden oder wenn Werte bestimmten Oberflächen-Elementen zugewiesen werden sollen, z.B. eine Rechnungsnummer zu einem bestimmten Text-Container auf der Oberfläche oder in einem Report. Zudem lassen sich mit Hilfe einer Hashtable gleich mehrere Werte auf einmal übergeben, obwohl nur 1 Parameter (Übergabewert) vorgesehen ist, was z.B. beim Aufruf eines neuen Fensters oder eines Reports sehr vorteilhaft sein kann.

» Objekt der Klasse XdevHashtable | XDEV NLS: XdevPaartabelle «
Die Hashtable ist ein Objekt im Speicher, das mit Hilfe einer Variable angesprochen wird. Bei der Definition wird ein Hashtable-Objekt von der XDEV-Klasse XdevHashtable | XDEV NLS: XdevPaartabelle erzeugt.
» Keine Dimensionierung nötig «
Die Hashtable kann grundsätzlich beliebig viele Einträge sowie Werte und Schlüssel jeden Typs aufnehmen. Eine Dimensionierung ist jedoch nicht notwendig, da die Hashtable den benötigten Speicher automatisch reserviert.
» Zugriff mit Methoden «
Der Zugriff auf die Hashtable erfolgt immer mit Hilfe spezieller Methoden, die Ihnen die XDEV-Klasse XdevHashtable | XDEV NLS: XdevPaartabelle zur Verfügung stellt, z.B. für das Hinzufügen oder Löschen eines Wertes.
1
2
|
XdevHashtable tabelle = createHashtable( );
tabelle.put("COL32","Titansilber");
|
|
1
2
|
XdevHashtable tabelle = createHashtable( )
tabelle.put("COL32","Titansilber")
|
|
1
2
|
XdevPaarTabelle tabelle = erzeugePaarTabelle( );
tabelle\setze("COL32","Titansilber")
|
|
Tipp: Eine Übersicht über alle Methoden der Hashtable erhalten Sie über die Auto-Vervollständigung des Code-Editors. Definieren Sie dazu eine Hashtable, geben Sie dann in der nächsten Codezeile die Hashtable-Variable ein und unmittelbar danach einen Punkt | XDEV NLS: Backslash.
|
Beispiele für den Umgang mit Listen:
Umgang mit Listen
|
Beispiele
|
Hashtable erzeugen
|
Eine Liste wird nicht wie eine Virtuelle Tabelle per Assistenten angelegt, sondern wie eine gewöhnliche Variable im Code definiert. Bei der Definition muss der Listen-Variable sofort eine neue, leere Liste zugewiesen werden, welche mit dem Schlüsselwort create | XDEV NLS: Erzeuge erzeugt wird. Dabei wird ein Objekt von der Klasse XdevList | XDEV NLS: XdevListe erzeugt. Der Zugriff erfolgt dann mit Hilfe einer Variable, die auf das jeweilige Listen-Objekt im Speicher zeigt.
1
|
XdevHashtable tabelle = createHashtable( );
|
|
1
|
XdevHashtable tabelle = createHashtable( )
|
|
1
|
XdevPaarTabelle tabelle = erzeugePaarTabelle( );
|
|
|
Wert hinzufügen
|
Mit Hilfe der Methode put( ) | XDEV NLS: setze ( ) lässt sich der Hashtable ein Schlüssel-Wert-Paar hinzufügen, auch Objekte. Der Zugriff auf den Wert erfolgt immer über den Schlüssel, der deshalb eindeutig sein muss.
1
2
|
XdevHashtable tabelle = createHashtable( );
tabelle.put("COL32","Titansilber");
|
|
1
2
|
XdevHashtable tabelle = createHashtable( )
tabelle.put("COL32","Titansilber")
|
|
1
2
|
XdevPaarTabelle tabelle = erzeugePaarTabelle( );
tabelle\setze("COL32","Titansilber")
|
|
|
Wert lesen
|
Mit Hilfe der Methode get( ) | XDEV NLS: hole ( ) können Sie Werte aus der Liste auslesen. Der Zugriff auf den Wert erfolgt immer durch die Angabe des Index.
1
2
|
String wert;
wert = tabelle.get("COL32");
|
|
1
2
|
String wert
wert = tabelle.get("COL32")
|
|
1
2
|
Zeichenkette wert
wert = tabelle\hole("COL32")
|
|
|
Wert löschen
|
Mit der Methode remove( ) | XDEV NLS: lösche ( ) können Sie Werte aus der Liste entfernen. Der zu löschende Wert wird mit Hilfe seines Index bestimmt. Nach dem Löschen erhalten alle nachfolgenden Werte einen neuen, um den Wetrt 1 reduzierten Index, sodass der Index der Liste wieder lückenlos ist.
1
|
tabelle.remove("COL32");
|
|
1
|
tabelle.remove("COL32")
|
|
1
|
tabelle\lösche("COL32")
|
|
|
Größe der Hashtable ermitteln
|
Mit der Methode size( ) | XDEV NLS: größe ( ) lässt sich die Größe der Liste, bzw. die Anzahl der Werte in der Liste ermitteln.
1
2
|
Int groesse;
groesse = tabelle.size();
|
|
1
2
|
Int groesse
groesse = tabelle.size()
|
|
1
2
|
Ganzzahl groesse
groesse = tabelle\größe ( )
|
|
|
Schlüssel auslesen
|
Die Hashtable besitzt einen internen Zeiger, der auf den aktuellen Schlüssel zeigt. Mit Hilfe der Methode getKey( ) | XDEV NLS: holeSchlüssel ( ) können Sie den Schlüssel auslesen, auf den der Hashtable-Zeiger gerade zeigt.
1
2
|
String schlüssel;
schlüssel = tabelle.getKey();
|
|
1
2
|
String schlüssel
schlüssel = tabelle.getKey()
|
|
1
2
|
Zeichenkette schlüssel
schlüssel = tabelle\holeSchllüssel( )
|
|
|
Zeiger auf den nächsten Schlüssel setzen
|
Der Hashtable-Zeiger lässt sich mit Hilfe der Methode next | XDEV NLS: nächsterEintrag ( ) auf die nächste Position setzen. Die Methode gibt false | XDEV NLS: Falsch zurück, wenn kein Eintrag mehr vorhanden ist.
1
|
tabelle\nächsterEintrag( )
|
|
Mit Hilfe einer Schleife lässt sich die Hashtable durchsuchen.
1
2
3
4
|
while (tabelle.next()=true)
{
}
|
|
1
2
3
|
While (tabelle.next()=true)
Wend
|
|
1
2
|
Solange ( tabelle\nächsterEintrag( ) = WAHR )
|
|
|
Basiswissen: Variablen, Zeiger-Variablen, Methoden, Listen
|