[java] intéret des hashmap?

intéret des hashmap? [java] - Java - Programmation

Marsh Posté le 30-10-2006 à 14:44:37    

Je souhaite insérer des mots avec leur nombre de lettres dans une structure de données.
Je voudrai utilisé une HashMap mais je ne comprends pas trop l'histoire des couples clés-valeurs. J'ai pensé que mes clés pourraient être mes nombres de lettres, et les valeurs seraient les mots mais j'ai lu qu'une clé ne pouvait avoir qu'une valeur! A quoi sert une HashMap alors, l'intéret des tables de hachage ce n'est pas d'avoir plusieurs valeurs pour une clé?
Comment puis-je insérés mes données alors?
 
D'avance merci ;)


Message édité par i'n'i le 30-10-2006 à 14:45:09
Reply

Marsh Posté le 30-10-2006 à 14:44:37   

Reply

Marsh Posté le 30-10-2006 à 14:45:54    

HashMap <Integer, List<String>> :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 30-10-2006 à 15:24:07    

Citation :

j'ai lu qu'une clé ne pouvait avoir qu'une valeur(...) l'intéret des tables de hachage ce n'est pas d'avoir plusieurs valeurs pour une clé


 
c'est même l'intérêt d'une clef...
en BD, si une clef te renvoie plusieurs lignes, tu fais comment ?
 
ici, c'est pareil, une clef te renvoie un enregistrement (ou 0) , pas 12.
 
sinon, je vois pas bien pourquoi prendre le nombre de lettre. Le hashcode sert un peu à ça.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 30-10-2006 à 16:02:41    

kadreg a écrit :

HashMap <Integer, List<String>> :o


 
ok mais lorsque je veux rajouter un mot, je ne peux pas faire un put sur ma clé car ça m'efface ma liste ou alors il faut d'abord l'extraire, la sauvegarder, le modifier, c'est pas pratique, je voudrais travailler directement sur ma table!


Message édité par i'n'i le 30-10-2006 à 16:08:15
Reply

Marsh Posté le 30-10-2006 à 16:08:22    

oui, donc tu fait pas un put, mais un get (la javadoc, c'est bien).
ton get te renvoie une liste (uo null, gère les cas), et tu ajoutes dans cette liste.
c'est beau hein ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 30-10-2006 à 16:08:53    

pour travailler directement sur ta table, laisse tomber le nombre de lettres


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 30-10-2006 à 16:17:25    

ok merci pour la rapidité de tes réponses, je vais passer par une liste alors car il me faut le nombre de lettres ;)


Message édité par i'n'i le 30-10-2006 à 16:17:45
Reply

Marsh Posté le 30-10-2006 à 16:32:26    

??!
 

Code :
  1. public class TaClass {
  2.     Map map = new HashMap();
  3.     
  4.     public void stockerMot(String string) {
  5.         Integer nbLettres = new Integer(string.size());
  6.         List list = map.get(nbLettres);
  7.         if (list == null) {
  8.             list = new ArrayList();
  9.             map.put( nbLettres, list);
  10.         }
  11.         list.add(string);
  12.     }
  13.  
  14.     public List getMotsPourTaille(int nbLettres) {
  15.         return map.get(new Integer(nbLettres));
  16.     }
  17. }


 
c'est plus clair là ?


Message édité par brisssou le 30-10-2006 à 16:33:40

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 30-10-2006 à 16:48:51    

oui merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed