Je me heurte à ce problème étrange où j'itère sur une liste de réponses. Lorsque j'essaie d'obtenir la réponse de chaque réponse par la question, la plupart d'entre elles obtiennent la réponse correctement, sauf une où obtenir la réponse à partir du hashmap donne null. J'ai lancé le mode débogage dans Eclipse, et j'ai comparé la question dont j'essaie d'obtenir la valeur à partir du hashmap getAnswerMap() avec celle qui se trouve à l'intérieur de ce hashmap et les deux semblent être exactement les mêmes, mais j'obtiens toujours null.
for (SurveyResponse response : responses) {
MultipleChoiceAnswer answer = (MultipleChoiceAnswer) response.getAnswerMap().get(question);
....
....
}
Ensuite, j'ai pensé qu'il s'agissait d'un problème de code de hachage, j'ai donc ajouté une autre vilaine ligne de code pour vérifier les codes de hachage, et ils ont en fait le même code de hachage et la ligne supplémentaire suivante a fonctionné et a donné une réponse correcte.
for (SurveyResponse response : responses) {
MultipleChoiceAnswer answer = (MultipleChoiceAnswer) response.getAnswerMap().get(question);
for (Entry entry: response.getAnswerMap().entrySet()) {
if (entry.getKey().hashCode() == question.hashCode()) answer = (MultipleChoiceAnswer) entry.getValue();
....
....
}
Cependant, c'est très laid et j'aimerais vraiment obtenir la réponse correcte à partir du hashmap. Avez-vous des suggestions ?
MISE À JOUR : L'appel des méthodes hashCode() et equals() sur les deux objets montre que les deux ont des hashcodes égaux et que equals() renvoie vrai. Je soupçonne que, comme l'indique l'une des réponses ci-dessous, le problème pourrait être que la question a été insérée avec un hashcode différent lorsqu'elle a été insérée dans le hashmap. Par conséquent, l'appel de la méthode get en question renvoie null car l'objet que j'essaie d'obtenir n'a pas le même hashcode que l'ancien. Des réponses extrêmement utiles les gars !