Zuordnungstabelle (Datenstruktur)

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Assoziatives Datenfeld)
Zur Navigation springen Zur Suche springen

Die Zuordnungstabelle (auch Dictionary, Liste von Schlüssel-Wert-Paaren oder assoziatives Datenfeld) ist eine Datenstruktur, bei der anders als bei einem gewöhnlichen Feld auch nichtnumerische (oder nicht fortlaufende) Schlüssel, zumeist Zeichenketten, verwendet werden können, um die enthaltenen Elemente zu adressieren; diese sind in keiner festgelegten Reihenfolge abgespeichert. Idealerweise werden die Schlüssel so gewählt, dass eine für die Programmierer nachvollziehbare Verbindung zwischen Schlüssel und Datenwert besteht. Die meisten Programmiersprachen unterstützen assoziative Felder. Datenbanken welche assoziative Daten halten werden Schlüssel-Werte-Datenbanken genannt.

Mathematisch betrachtet wird durch die Wertezuordnungen in der Zuordnungstabelle eine Abbildung mit endlicher Definitionsmenge und endlicher Bildmenge beschrieben. Eine Implementierung ist mit Bäumen möglich, die bei weitem häufigste Umsetzung ist jedoch die Hashtabelle.

Programmierung[Bearbeiten | Quelltext bearbeiten]

Die Ausgabe aller Beispiele ist „Mustermann“. Es handelt sich jeweils um das gleiche eindimensionale assoziative Feld, implementiert in verschiedenen Sprachen. Mitunter gibt es in den Sprachen weitere Möglichkeiten, Zuordungstabellen anzulegen.

Common Lisp[Bearbeiten | Quelltext bearbeiten]

(defparameter *person* (make-hash-table))

(setf (gethash 'vorname    *person*) "Hans")
(setf (gethash 'name       *person*) "Mustermann")
(setf (gethash 'geburtstag *person*) "01.01.01")
(setf (gethash 'wohnort    *person*) "Musterstadt")

(loop for key being the hash-keys in *person*
      using (hash-value val)
      do (format t "~10a => ~a~%" key val))

Haskell[Bearbeiten | Quelltext bearbeiten]

import qualified Data.Map as M
-- ...
someAction :: IO ()
someAction = putStrLn $ person M.! "Name"
    where person = M.fromList [
        ("Vorname", "Hans"),
        ("Name", "Mustermann"),
        ("Geburtstag", "01.01.01"),
        ("Wohnort", "Musterstadt")
    ]

Objective-C[Bearbeiten | Quelltext bearbeiten]

NSMutableDictionary *person = [[NSMutableDictionary alloc] init];
[person setValue:@"Hans" forKey:@"Vorname"];
[person setValue:@"Mustermann" forKey:@"Name"];
[person setObject:@"01.01.01" forKey:@"Geburtstag"];
[person setObject:@"Musterstadt" forKey:@"Wohnort"];
NSLog(@"%@", [person valueForKey:@"Name"]);

Perl[Bearbeiten | Quelltext bearbeiten]

%person = ('Vorname', 'Hans', 'Name', 'Mustermann', 'Geburtstag', '01.01.01', 'Wohnort', 'Musterstadt');
print $person{'Name'};

PL/SQL[Bearbeiten | Quelltext bearbeiten]

DECLARE
    TYPE ty_person IS TABLE OF VARCHAR2(50) INDEX BY VARCHAR2(50);
    person  ty_person;
BEGIN
    person('Vorname')    := 'Hans';
    person('Name')       := 'Mustermann';
    person('Geburtstag') := '01.01.01';
    person('Wohnort')    := 'Musterstadt';
    DBMS_OUTPUT.PUT_LINE(person('Name'));
END;

Python[Bearbeiten | Quelltext bearbeiten]

Variante 1

person={'Vorname': 'Hans', 'Name': 'Mustermann', 'Geburtstag': '01.01.01', 'Wohnort': 'Musterstadt'}
print (person["Name"])

Variante 2

k = ['Vorname', 'Name', 'Geburtstag', 'Wohnort']
v = ['Hans', 'Mustermann', '01.01.01', 'Musterstadt']
person=dict(zip(k, v))
print (person["Name"])

Tcl[Bearbeiten | Quelltext bearbeiten]

array set person {
    Vorname    Hans
    Name       Mustermann
    Geburtstag 01.01.01
    Wohnort    Musterstadt
}
puts $person(Name)

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Peter A. Henning, Holger Vogelsang (Hrsg.): Taschenbuch Programmiersprachen. 2. Auflage. Hanser, München 2007, ISBN 978-3-446-40744-2.
  • Klein, Bernd: Einführung in Python 3 für Ein- und Umsteiger. 2., überarb. und erw. Aufl. München 2014, ISBN 978-3-446-44133-0, S. 40.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]