Dictionnaire

Dictionnary, Map.

Besoin

Associer des valeurs à des clés.

Analyse

Un dictionnaire associe une valeur unique à une clé unique.

Conception

Des dictionnaires peuvent être réalisés au travers de :

Implémentation

En Java les dictionnaires sont représentés par des classes implémentant <strong>java.util.Map</strong>. fournissant un accès à :

L'obtention de la valeur d'une clé étant obtenue via myValue = myMap.<strong>get</strong> <strong>(</strong>myKey<strong>)</strong>

Les clés et valeurs étant des collection, on peut itérer sur chacune d'entre elles. Cependant, si l'on souhaite effectuer un traitement sur chaque couple clé-valeur, il est plus efficace d'itérer sur les entrées (Set<strong> entrySet()</strong>) du tableau de hâchage et travailler sur le couple clé-valeur (<strong>Map.Entry</strong>) plutôt que de rechercher à chaque itération la valeur de chaque clé :

Iterator mapEntriesIterator = myMap.entrySet().iterator();
while (mapEntriesIterator.hasNext()) {
  Map.Entry mapEntry = (Map.Entry) mapEntriesIterator.next();
  Object entryKey = mapEntry.getKey();
  Object entryValue = mapEntry.getValue();
}

Exemples

Implémentations de Map Commentaire
Tableau de hâchage Arbre équilibré Tableau de hachâge + liste chaînée
Type Hashtable HashMap TreeMap LinkedHashMap
Triable Non Oui
Synchronisé Oui Non Non Non La synchronisation permet à un dictionnaire d'être thread-safe (toujours cohérent en contexte multi-thread). Par contre les dictionnaire non synchronisés sont plus rapides, et donc plus avantageux dans des contextes mono-thread.
Clés nulles possibles Non Oui Dépend du comparateur
Valeurs nulles possibles Non Oui
Trié Non Non Oui Non
Commentaire < J2SE 1.2
Coût accès log(n)

Des exemples de dictionnaires sont :

Notes