java - HashMap的key值不允许重复问题
高洛峰
高洛峰 2017-04-18 10:43:24
0
2
854
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
Peter_Zhu

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.

洪涛

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal