Hashcode clé NULL dans la table de hachage
Je viens de lire à propos de la différence entre HashMap et de classe HashTable en java. J'y ai trouvé une différence que l'ancien permettre à clé null et, plus tard, n'a pas de privilèges pour les mêmes.
Autant que le travail de la table de hachage est une source de préoccupation, je sais que, il appelle la méthode hashcode sur la clé pour trouver le seau dans laquelle la valeur de la clé de la paire doit être placé. Voici ma question:
Comment hashcode pour une valeur null est calculée ou Est-il une valeur par défaut pour le hashcode de la clé null (si oui, veuillez spécifier la valeur)?
OriginalL'auteur Prashant | 2013-06-24
Vous devez vous connecter pour publier un commentaire.
de HashMap:
et si vous regardez plus loin, vous verrez que nul va toujours bin 0
cela signifie que le hashcode null, 0, ou (en théorie), tout nombre qui défende le num & (taille_table-1) == 0
Voulez-vous dire que pour la clé null, la valeur par défaut de hashcode est 0 et le premier bin/seau sera utilisée que par la table de hachage de la mise en œuvre.
oui, c'est exactement ce que je veux dire.
OriginalL'auteur
À partir du code source de la table de hachage, si la clé est
null
il est géré différemment. Il n'y a pas de hashcode généré pour les nuls, mais c'est uniquement stockée à l'indice 0 dans un tableau interne avec la valeur de hachage de 0. Notez également que la valeur de hachage d'une chaîne vide est aussi 0(dans le cas où les clés sont des chaînes de caractères), mais l'indice où il est stocké dans le tableau interne s'assure qu'ils ne sont pas mélangés.OriginalL'auteur
Si vous lisez la description de
static int hash(int h)
méthode dans la table de hachage, vous trouverez que nulle clés de l'index 0.OriginalL'auteur
Lorsqu'une valeur null est existant dans la carte, la clé de cette valeur est null. vous ne pouvez pas avoir beaucoup de clés null dans une carte. Une seule clé null.
OriginalL'auteur
Il indique clairement ce qui se passe quand vous faites un mettre avec une clé, qui était déjà dans la carte. Le cas spécifique de la clé == null se comporte de la même manière: vous ne pouvez pas avoir deux différents mappages pour la clé null (tout comme vous ne pouvez pas pour n'importe quelle autre touche). Ce n'est pas un cas particulier, dans le contexte de votre question.
OriginalL'auteur