recherche

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

java - HashMap的key值不允许重复问题

高洛峰高洛峰2768 Il y a quelques jours828

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

  • 天蓬老师

    天蓬老师2017-04-18 10:45:24

    Il est recommandé de jeter un œil au principe de Map
    Lorsque la carte stocke des valeurs, elle n'utilise pas l'adresse de l'objet, mais le hashcode de l'objet
    Vous mettez d'abord p1 comme clé dans la carte,
    puis Lorsque la valeur de p1 est modifiée, le hashcode de p1 a changé Lorsqu'il est à nouveau stocké, la carte pense qu'il s'agit d'une clé différente, elle l'enregistre donc.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:45:24

    Ce qui suit est l'implémentation interne de HashMap.put

    public V put(K key, V value) {
        return putVal(hash(key), key, value, false, true);
    }
    

    Après p1.setAge(5), le hashCode de p1 change et le hash(key) dans la fonction ci-dessus change Bien que la clé soit le même objet, HashMap la stocke toujours comme une nouvelle clé.

    Pour des raisons d'efficacité, ce scénario n'est pas pris en charge. Cela peut être considéré comme un écueil de HashMap.

    répondre
    0
  • Annulerrépondre