java - Des doutes sur indexFor (int h, int length) dans HashMap
迷茫
迷茫 2017-05-17 09:59:13
0
1
650
 static int indexFor(int h, int length) {
        // assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";
        return h & (length-1);
    }

HashMap hachera la valeur de hachage de la clé et la taille du tableau Entry[] pour obtenir la position en indice du tableau Entry. Je viens de découvrir lors du débogage qu'il existe deux clés différentes (avec des valeurs de hachage différentes), mais la index obtenu via indexFor Les indices sont les mêmes, ce qui signifie que deux valeurs avec des valeurs de clé différentes et des valeurs de hachage différentes sont liées ensemble pour former une liste chaînée. Je me souviens avoir lu des articles écrits par d'autres auparavant, et ils ont tous lu. a dit que les valeurs de hachage sont les mêmes, mais que les valeurs clés sont différentes. Les valeurs formeront une liste chaînée, mais dans le débogage réel, j'ai trouvé des résultats différents. Quelqu'un peut-il jeter un œil au problème

.
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
Ty80
Object (key) -> hashCode -> index

Différents Object peuvent avoir le même hashCode (qui à son tour doit être différent, à moins que hashCode ou equals ne soient définis incorrectement );
Différents hashCode peuvent avoir le même index (et à l'inverse doivent être différents), puis une liste chaînée sera formée. Object可能有相同的hashCode(反过来一定不同,除非hashCodeequals定义错了);
不同的hashCode可能有相同的index(反过来一定不同),这时才会形成链表。

这里的hashCode可能跟你看到的某些文章的hash

Le hashCode ici peut ne pas avoir la même signification que le hash dans certains articles que vous avez vus. 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!