Assurez-vous que vous disposez de la ressource geometrie. Au besoin, consultez la page Ressources.
Une table est une fonction qui associe une valeur à une clé ; une clé ne peut donc avoir qu’une seule valeur. La classe HashMap<K,V> est une implantation particulière de table (K est le type des clés, et V le type des valeurs). La fonction de recherche de clé est réalisée en un temps presque constant, grâce à l’utilisation d’une fonction dite de hachage, qui transforme la clé en un entier.
L’instruction ci-dessous crée une table de hachage vide :
Combien de champs sont nécessaires à la représentation d’une HashMap ? Leurs noms vous évoquent quelque chose ?
L’instruction ci-dessous permet d’ajouter une entrée à la table :
Ajoutez un deuxième couple clé-valeur, puis un troisième. Que s’est-il passé ?Les instances de Entry ne sont pas rangées de façon contigüe dans le tableau. Êtes-vous capable de retrouver la logique qui se trouve derrière l’attribution des cases ?
Que se passe-t-il si on ajoute un nouveau couple clé-valeur avec une clé qui existe déjà ?
Il est également possible de supprimer un couple clé-valeur, en utilisant la fonction remove. Écrivez l’instruction qui supprime l’une des clés et suivez l’évolution de la représentation mémoire.C’est le moment de choisir l’option Objets morts. Que voit-on ?
L’instruction ci-dessous crée une nouvelle table de hachage vide :
Ajoutez la clé baba. Que devient le tableau des Entry ? À quoi correspond une instance de Entry ?
Que se passe-t-il si on ajoute une nouvelle clé xxx ?
Écrivez un appel à la fonction de recherche get. Comment est réalisée la fonction get ? Que peut-on en conclure sur l’efficacité de la fonction get ?
Enlevez un par un tous les points de la table (fonction remove). La table est-elle réorganisée ?
Entrez la suite des instructions ci-dessous. L’objectif est de créer une table de hachage table1 contenant 2 points, puis de créer la table2 en utilisant le constructeur de copie de HashMap et de créer table3 en utilisant la fonction clone. Étudiez les différentes implantations mémoire de ces tables. Comptez le nombre d’instances des points puis enlevez un point de table1. Que constatez-vous ?
La suite des instructions ci-dessous ressemble à la précédente, sauf que les points sont accessibles depuis des variables. Que constatez-vous ?