Traitement de LinkedHashMap - Java - Programmation
Marsh Posté le 10-09-2014 à 01:09:51
Si c'est une question serieuse, en gros:
- tu utilises une structure de donnees (LinkedHashMap) qui a besoin de verifier l'egalite entre les cles
- tu definis ta classe Duo sans definir l'egalite entre ses instances; du coup, elle va utiliser l'egalite par defaut qui est juste de comparer l'adresse en memoire (en gros)
- du coup, ton premier Duo que tu utilises pour inserer etant une instance differente que celui que tu crees plus tard pour recuperer la valeur, les addresses en memoire ne sont pas les memes et la map se comporte comme prevu: tu lui passes une cle qu'elle ne connait pas, du coup elle ne retourne rien.
Pour faire ce que tu veux, il faut que tu "overrides" les methodes equals() et hashcode() de ta classe Duo, par exemple:
public boolean equals(Object object) { public int hashCode() { |
En remarque accessoire, lire la doc, ca aide aussi.
Marsh Posté le 09-09-2014 à 22:11:36
Bonjour,
J ai une question a laquelle je ne trouve pas de reponse et je suis completement bloque. c est pourquoi je me tourne vers vous en esperant en avoir une chez vous.
j ai cree une classe duo tres simple qui a deux elements.
Apres, en partant d une liste [0,1,2,3,4], je cree une LinkedHashMap avec comme cle un Duo et comme valeur un Integer dans laquelle je stocke :
ce que j obtiens par le code suivant :
Rien de magique jusque la !!
Les ennuis commencent a partir du moment ou je veux recuperer le contenu de ma LinkedHashMap par le code suivant :
Sauf que je n obtiens que des Null. Et je ne sais pas ce qui se passe.
N.B. Peut etre il y d autres moyens pour le faire mais je tiens a utiliser une boucle for (pour parcourir la liste values value par value) pour des considerations reltives au resultat final auquel je compte aboutir (et que je n ai pas presente ici pour ne pas etre trop long)..........
Merci encore une fois de votre aide.