Supposons que j'ai un HashMap M. Je veux appeler la fonction "get" sur ce HashMap, et trouver la valeur associée à un objet donné S. Mais je n'ai pas de référence réelle à l'objet S, donc je crée un nouvel objet S_new dont le contenu est identique au contenu de S. Si j'appelle M.get(S_new), est-ce que cela me donnera la valeur associée à la clé S?

1
Jessica 8 août 2017 à 23:36

2 réponses

Oui, tant que hashcode et equals produiront exactement les mêmes valeurs. Notez également que get n'exige même pas que le paramètre soit T - c'est Object, donc le type any qui remplirait le hashcode et equals fonctionnerait

3
Eugene 8 août 2017 à 20:40

Non pour obtenir la valeur de la carte à l'aide de la clé ne signifie pas que la clé doit être le même objet que celui utilisé lors de la mise.

La seule chose est que hashcode & equals devrait être le même et c'est la raison pour laquelle il est obligatoire de remplacer la méthode Hashcode & equals si vous voulez utiliser votre propre objet de classe comme clé.

0
user2862544 9 août 2017 à 02:00