Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1227 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Trier selon valeur HashMap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trier selon valeur HashMap

n°1371613
Loizo
Posté le 21-05-2006 à 16:51:10  profilanswer
 

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 ?
 

Code :
  1. private HashMap<String,Integer> tableFrequence;
  2. private TreeMap<String,Integer> frequenceTrie;
  3. FreequenceTrie = new TreeMap<String,Integer>(tableFrequence);


 
Merci :jap:

mood
Publicité
Posté le 21-05-2006 à 16:51:10  profilanswer
 

n°1371984
jagstang
Pa Capona ಠ_ಠ
Posté le 22-05-2006 à 11:29:14  profilanswer
 

tu peux éventuellement essayer Collections.sort en implémentant un comparateur pour HashMap

n°1372015
Ledid
Posté le 22-05-2006 à 11:59:33  profilanswer
 

En effet, tu ne peux à priori trier que les clés (en utilisant un Comparator) donc il va falloir que tu "bidouilles" ta TreeMap...

n°1372028
souk
Tourist
Posté le 22-05-2006 à 12:13:25  profilanswer
 

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 ?

n°1372084
Loizo
Posté le 22-05-2006 à 13:13:01  profilanswer
 

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 ! :o
 
Merci tlm :jap:

n°1372119
Loizo
Posté le 22-05-2006 à 13:50:34  profilanswer
 

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 :
  1. private List<Caractere> frequenceTrie;
  2. frequenceTrie = new ArrayList<Caractere>();
  3. //Je remplis mon tableau
  4. Arrays.sort(frequenceTrie);
  5. //Erreur : The method sort(long[]) in the type Arrays is not applicable for the arguments (List<Caractere> )


 
Ma méthode compareTo dans ma classe Caractere (qui implemente Comparable)

Code :
  1. public int compareTo(Object o){
  2.  if(!(o instanceof Caractere))
  3.   throw new ClassCastException();
  4.  Caractere c = (Caractere)o;
  5.  if(this.nbOccurence < c.getNbOccurence())
  6.   return -1;
  7.  else if(this.nbOccurence == c.getNbOccurence())
  8.   return 0;
  9.   else return 1;
  10. }


 
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 :D
Vais le faire a la main le tri je sens !


Message édité par Loizo le 22-05-2006 à 14:03:12
n°1372186
Ledid
Posté le 22-05-2006 à 14:44:44  profilanswer
 
n°1372355
Bidem
Posté le 22-05-2006 à 16:59:02  profilanswer
 

Citation :

C'est pareil si je fais :
Collection.sort(frequenceTrie);


 
Essaye Collections.sort(frequenceTrie);

Message cité 1 fois
Message édité par Bidem le 22-05-2006 à 16:59:30
n°1372400
Loizo
Posté le 22-05-2006 à 17:34:30  profilanswer
 

Bidem a écrit :

Citation :

C'est pareil si je fais :
Collection.sort(frequenceTrie);


 
Essaye Collections.sort(frequenceTrie);


 
Ca marche génial !
Tain un s a la con :D
 
J'ai juste ca :
Type safety: Unchecked invocation sort(List<Caractere> ) of the generic method sort(List<T> ) of type Collections
 
Merci :jap:

n°1372416
Bidem
Posté le 22-05-2006 à 17:49:17  profilanswer
 


trouvé en cherchant un peu dans google :p
 
tu dois avoir ça :

Code :
  1. public class Caractere implements Comparable {
  2. ...
  3. }


 
et il faut mettre ça :
 

Code :
  1. public class Caractere implements Comparable<Caractere> {
  2. ...
  3. // la méthode compareTo sera à modifier aussi
  4. }

mood
Publicité
Posté le 22-05-2006 à 17:49:17  profilanswer
 

n°1372418
Loizo
Posté le 22-05-2006 à 17:51:11  profilanswer
 

Bidem a écrit :

trouvé en cherchant un peu dans google :p
 
tu dois avoir ça :

Code :
  1. public class Caractere implements Comparable {
  2. ...
  3. }


 
et il faut mettre ça :
 

Code :
  1. public class Caractere implements Comparable<Caractere> {
  2. ...
  3. // la méthode compareTo sera à modifier aussi
  4. }



 
Nickel ca enleve mon warning, thx :jap:

n°1372837
Ledid
Posté le 23-05-2006 à 10:08:04  profilanswer
 

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

n°1373358
Loizo
Posté le 23-05-2006 à 16:54:05  profilanswer
 

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 :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Trier selon valeur HashMap

 

Sujets relatifs
Problème de récupération valeur d'un select en javascript avec firefoxtrier un tableau
probleme input text valeur par defaut[RESOLU]Convertir un float ou int en une valeur Q15 et réciproquement
[vb6] variable perd sa valeur d'une forme à l'autreMettre un filtre sur une scollbar selon la valeur de la cellule
Donner une valeur à un champsRecuparation valeur d'un timer
Fonction et $variable=valeur de sortieVerifier l'existence d'une valeur
Plus de sujets relatifs à : Trier selon valeur HashMap


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR