Trier selon valeur HashMap - Java - Programmation
Marsh Posté le 22-05-2006 à 11:29:14
tu peux éventuellement essayer Collections.sort en implémentant un comparateur pour HashMap
Marsh Posté le 22-05-2006 à 11:59:33
En effet, tu ne peux à priori trier que les clés (en utilisant un Comparator) donc il va falloir que tu "bidouilles" ta TreeMap...
Marsh Posté le 22-05-2006 à 12:13:25
au lieu d'une Map, tu pourrais pas avoir une List d'objets d'une autre classe que tu definis dont chaque instance correspond a un compte d'occurence, genre un char et un int, et apres tu tries simplement ta liste avec un Comparator qui va bien ?
Marsh Posté le 22-05-2006 à 13:13:01
souk a écrit : au lieu d'une Map, tu pourrais pas avoir une List d'objets d'une autre classe que tu definis dont chaque instance correspond a un compte d'occurence, genre un char et un int, et apres tu tries simplement ta liste avec un Comparator qui va bien ? |
Si mais je voulais utiliser une map parce que c'est rapide. Je ne sais pas si ca change vraiment quelque chose avec un fichier texte de 100ko mais bon...
Mais bon vu la galere que c'est je vais changer... C'est fou qu'il n'y ai pas une container avec la possibilité de mettre une clké/Valeur et de la trier selon la valeur !
Merci tlm
Marsh Posté le 22-05-2006 à 13:50:34
J'ai fais ce que souk a dit, en fait je garde ma hashmap pour gagner du temps quand je compte et ensuite je recopie les infos dans un ArrayList de caractere qui ont comme attribut la val du caractere et son nombre d'occurence.
Mais pour trier c'est chaud...
Code :
|
Ma méthode compareTo dans ma classe Caractere (qui implemente Comparable)
Code :
|
Une idée de cette erreur ?
Arrays.sort(frequenceTrie);
//Erreur : The method sort(long[]) in the type Arrays is not applicable for the arguments (List<Caractere> )
C'est pareil si je fais :
Collection.sort(frequenceTrie);
//Erreur : The method sort(List<Caractere> ) is undefined for the type Collection
Edit :
J'ai trouvé en faisant ca :
Arrays.sort(frequenceTrie.toArray());
Mais ca ne trie rien du tout
Vais le faire a la main le tri je sens !
Marsh Posté le 22-05-2006 à 14:44:44
si ça peut t'aider...
http://forum.java.sun.com/thread.j [...] ID=2680359
Marsh Posté le 22-05-2006 à 16:59:02
Citation : C'est pareil si je fais : |
Essaye Collections.sort(frequenceTrie);
Marsh Posté le 22-05-2006 à 17:34:30
Bidem a écrit :
|
Ca marche génial !
Tain un s a la con
J'ai juste ca :
Type safety: Unchecked invocation sort(List<Caractere> ) of the generic method sort(List<T> ) of type Collections
Merci
Marsh Posté le 22-05-2006 à 17:49:17
trouvé en cherchant un peu dans google
tu dois avoir ça :
Code :
|
et il faut mettre ça :
Code :
|
Marsh Posté le 22-05-2006 à 17:51:11
Bidem a écrit : trouvé en cherchant un peu dans google
|
Nickel ca enleve mon warning, thx
Marsh Posté le 23-05-2006 à 10:08:04
Je crois que j'ai trouvé ton bonheur par le plus grand des hasards : http://www.kickjava.com/753.htm : Sort a TreeMap by its values not its keys
Marsh Posté le 23-05-2006 à 16:54:05
Ledid a écrit : Je crois que j'ai trouvé ton bonheur par le plus grand des hasards : http://www.kickjava.com/753.htm : Sort a TreeMap by its values not its keys |
Je vais regarder ca, merci
Marsh Posté le 21-05-2006 à 16:51:10
Bonjour,
je compte les occurances de chaque lettres dans un fichiers, je stocke cela dans une hashmap. La clé tant la lettre et la valeur son nombres d'occurences. J'aimerai ensuite trier ma hashmap selon un ordre croissant des valeurs. Je sais que l'on ne peut trier une hashmap j'essaye donc de passer par une Treemap mais a priori on ne peut trier que pour les clé...
Comment puis je faire ?
Faut il utiliser un autre type de map ?
Merci