recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Des doutes sur indexFor (int h, int length) dans HashMap

 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

.
迷茫迷茫2775 Il y a quelques jours694

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-05-17 10:01:13

    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. 🎜

    répondre
    0
  • Annulerrépondre