Maison > Questions et réponses > le corps du texte
天蓬老师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.
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.