Tableau de Hashmap

Tableau de Hashmap - Java - Programmation

Marsh Posté le 23-03-2006 à 17:25:46    

Bonjour à tous!
 
Je vous expose mon problème qui concerne les hastables:
 
Je dispose de séquences (chaine de caractères) sous la forme suivante:
 
IENDAEHVREVLVEASKNSRLLDIEENARRKGIEVRRVTT
LMDERRRMVQDLMRGYIKSEAVRRAMERVPREEFVPED
LANAPERLIEVFVLKREDKRLNPLLDELQRLSISVQQVNR
...
 
Mon alphabet (les lettres qui composent ces chaines) contient 20 lettres différentes.
 
Je cherche à determiner, pour chaque position, le nombre d'occurence de chacunes des lettre de mon alphabet.
Par exemple pour la position 1 (la 1ère lettre) j'ai une fois I et deux fois L .
 
Pour cela je parcours chaque "séquence" une par une
ensuite je parcours la "séquence" elle-même position par position
et je veux mettre à jour le nombre d'occurence de la lettre à cette position
 
Je doit obtenir le séma suivant (un exemple au hazard):
 
position 1:     lettre A --> 4 fois
                           R --> 12
                           G --> 9
 
position 2:             S --> 17
                           R --> 9
 
position 3:             Y --> 7
                           R --> 10
                           N --> 9
 
Je pensais faire un tableau (de la taille des séquences) qui contient des hashtables donnant le nombre d'occurence des lettres. Les lettres seraient les clefs (non-numériques c'est pour ça que je choisit une hashtable) et le nombre d'occurence seraient les valeurs. Le tableau aurait pour indice la position dans la séquence.
 
Donc en parcourant une séquence, à une position donnée, je dois tester si j'ai une clef correspondant à la lettre courante, si oui je désire incrémenter la valeur correspondante, sinon la créer et lui donner la valeur 1.
 
MAIS, une hashtable contient des objets et je ne peux pas y stocker d'entier comme valeur !
Je ne peux donc pas incrémenter le nombre d'occurence d'une lettre à une position donnée...
 
Avez vous une idée de comment traiter ce problème qui est reglé en deux temps trois mouvements avec perl par exemple mais qui me prend un temps fou en java!
 
Merci d'avance!!

Reply

Marsh Posté le 23-03-2006 à 17:25:46   

Reply

Marsh Posté le 23-03-2006 à 17:56:33    

Sisi tu peux. En utilisant la classe Integer. Bon d'accord c'est lourd pour incrémenter, faut faire un h.put("y", new Integer(h.get("y" ).intValue() + 1), en prenant y comme lettre d'exemple et h pour désigner une hashtable mais à priori ca marche.

Message cité 1 fois
Message édité par claque2000 le 23-03-2006 à 17:57:10

---------------
Linux registered user #352556
Reply

Marsh Posté le 23-03-2006 à 18:11:15    

claque2000 a écrit :

Sisi tu peux. En utilisant la classe Integer. Bon d'accord c'est lourd pour incrémenter, faut faire un h.put("y", new Integer(h.get("y" ).intValue() + 1), en prenant y comme lettre d'exemple et h pour désigner une hashtable mais à priori ca marche.


 
Merci pour ta réponse rapide mais:
h.get("y" ) est un object et ne supporte pas la methode intValue(), je n'arrive pas à changer cet objet en int !!
Au secour! :??:

Reply

Marsh Posté le 23-03-2006 à 19:54:44    

((Integer)h.get("y" )).intValue();

Reply

Marsh Posté le 23-03-2006 à 20:15:46    

Tu peux aussi utiliser commons-primitives
 
http://jakarta.apache.org/commons/primitives/
 
Tu y trouveras des implémentations de collections et de maps fonctionnant avec des types primitifs.
 
Sinon tu peux le faire en Java 5 et profiter de l'auto boxing :)


---------------
Commons Configuration - http://jakarta.apache.org/commons/configuration
Reply

Sujets relatifs:

Leave a Replay

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