Dictionnary, Map.
Associer des valeurs à des clés.
Un dictionnaire associe une valeur unique à une clé unique.
Des dictionnaires peuvent être réalisés au travers de :
En Java les dictionnaires sont représentés par des classes
implémentant <strong>java.util.Map</strong>
. fournissant un accès à :
Set <strong>keySet()</strong>
Collection <strong>values()</strong>
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();
}
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 :