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

  FORUM HardWare.fr
  Programmation
  Java

  Problème Hashmap en java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème Hashmap en java

n°1845579
jaysiat
Posté le 31-01-2009 à 17:08:47  profilanswer
 

Bonjour,
 
J'essaie de crée une hashmap qui va contenir des couples de mots avec leurs nombre d'occurrence à partir d'une liste de mots.
J'ai un petit soucis sur le nombre d'occurrence qui reste toujours égale à 0. Si quelqu'un a une solution à me proposer je le remercie d'avance.
 
public static Map<String,Integer> occurrencesDesMots(List<String> liste){
      Map<String,Integer> table = new HashMap();
      Iterator it=liste.iterator();
       
      int i;
      int nboccurence;
      for( i=0; i<liste.size(); i++){
         nboccurence=0;
      while(it.hasNext()){
           
         Object o = (Object) it.next();
         Object c = (Object) liste.get(i);
              if(c.equals(o)){
                  nboccurence++;
                   
            }
             
        }
      table.put(liste.get(i),nboccurence);
    }
     
      return table;
}

mood
Publicité
Posté le 31-01-2009 à 17:08:47  profilanswer
 

n°1845615
Flaie
No it's necessary
Posté le 31-01-2009 à 18:38:05  profilanswer
 

Salut à toi
 
tu peux faire plus simple par exemple comme ça :  

Code :
  1. public static Map<String, Integer> occurences(List<String> words) {
  2.  Map<String, Integer> table = new HashMap<String, Integer>();
  3.  for (String word: words) {
  4.   if (!table.containsKey(word))
  5.    table.put(word, 1);
  6.   else
  7.    table.put(word, table.get(word) + 1);
  8.  }
  9.  return table;
  10. }


---------------
Always wear a camera!
n°1845623
jaysiat
Posté le 31-01-2009 à 19:02:29  profilanswer
 

Merci de ta réponse ca marche nickel.
J'aimerai également savoir ou se trouve la faute dans mon programme, car j'ai beau cherché mais je ne trouve pas ce qui cloche.
Je cherche également une fonction qui me permettrait de supprimer de la liste tous les mots commençant par une string passée en paramètre, mais je n'ai pas d'idée dessus. Quelqu'un aurait-il une petite idée s'il vous plâit?

Message cité 1 fois
Message édité par jaysiat le 31-01-2009 à 20:54:53
n°1845700
Zipo
Ours bipolaire
Posté le 01-02-2009 à 03:06:15  profilanswer
 

Quelque chose dans ce genre là devrait suffire ?
 

Code :
  1. public void deletePrefixedWords(List<String> words, String prefix) {
  2.  Iterator<String> it = words.iterator();
  3.  while(it.hasNext()) {
  4.   String word = it.next();
  5.   if(word.startsWith(prefix)) {
  6.     it.remove();
  7.    }
  8.  }
  9. }


C'est une version simplifiée, tu peux t'amuser à rajouter un test sur words != null au début de la méthode, etc ...


---------------
- mon feed-back
n°1845766
charly007
Posté le 01-02-2009 à 11:49:38  profilanswer
 

jaysiat a écrit :

J'aimerai également savoir ou se trouve la faute dans mon programme, car j'ai beau cherché mais je ne trouve pas ce qui cloche.


A l'issue de la 1ère itération de la boucle for (i=0), l'itérateur it est positionné sur le dernier élément de la liste.
Donc pour les itérations suivantes de la boucle for (i=1, i=2, etc), it.hasNext() va renvoyer faux.

n°1845926
jaysiat
Posté le 01-02-2009 à 23:07:09  profilanswer
 

jaysiat a écrit :


public static Map<String,Integer> occurrencesDesMots(List<String> liste){
      Map<String,Integer> table = new HashMap();
      Iterator it=liste.iterator();
       
      int i;
      int nboccurence;
      for( i=0; i<liste.size(); i++){
         nboccurence=0;
      while(it.hasNext()){
           
         Object o = (Object) it.next();
         Object c = (Object) liste.get(i);
              if(c.equals(o)){
                  nboccurence++;
                   
            }
             
        }
      table.put(liste.get(i),nboccurence);
    }
     
      return table;
}


 
Merci de votre aide, mais la je comprends pas pourquoi l'iterator se place en bout de ma liste.
Ce que je voulais faire c'est prendre dans un premier temps le premier mot de la liste avec liste.get(i) et le comparé avec les mots contenus dans ma l'ensemble de ma liste pour augmenter le compteur d'occurence, puis passer au deuxieme mot et comparer avec la suite des mots ainsi de suite.

n°1845927
Zipo
Ours bipolaire
Posté le 01-02-2009 à 23:12:23  profilanswer
 

dans ta boucle for qui itère sur liste tu as une boucle while qui itère aussi sur liste ... c'est pas bon, dailleurs algorithmiquement ça n'a aucun sens
 
une fois que tu sortiras du while, pour toutes les itérations suivantes du for, il ne se passera rien


---------------
- mon feed-back
n°1848289
jaysiat
Posté le 07-02-2009 à 12:04:58  profilanswer
 

merci bien pour vos réponses.


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

  Problème Hashmap en java

 

Sujets relatifs
probleme structureprobléme accents dans une base POSTGRE à partir d'un prog JAVA
[Java JSP-JSF...]Masquer l'URL/nom d'un fichier à télécharger[VBA]Méthode Select... problème
Probleme simpleXMLproblème php
Exception: java.lang.RuntimeException: java.lang.NoClassDefFoundErrorproblème de HashMap résolu, mais besoin d'explications, bug JAVA ?
Problème java.util.HashMap$KeyIterator@157f0dc 
Plus de sujets relatifs à : Problème Hashmap en java


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