Remplir une hastable à partir d'un fichier

Remplir une hastable à partir d'un fichier - Java - Programmation

Marsh Posté le 08-01-2005 à 13:33:14    

Bonjour tout le monde!
 
Je vous expose mon problème. J'ai un fichier de string que j'ai séparé par un token qui est l'espace et je voudrais mettre chaque string(ici variable triplet) dans une hastable.
Comment puis-je faire?  
 
Merci de votre réponse.
 
 
Voici une partie du code :
 
Hashtable hashTriplets = new Hashtable();
....
while((uneLigne = fluxTampon.readLine())!= null)
              {
                  StringTokenizer st = new StringTokenizer(uneLigne," " );
                  System.out.println("voici la séquence d'entrée : " +uneLigne);
                                           
                       
                                     
                  while (st.hasMoreTokens())                
                  {
                   
                  String triplet = st.nextToken();
                   
                  RemplirHashtable /*this is the question*/
                                   
                  }  
                     
            }
               
              fluxTampon.close();
              fluxFichier.close();
          }
          catch(IOException e)
          {
              e.printStackTrace();
          }

Reply

Marsh Posté le 08-01-2005 à 13:33:14   

Reply

Marsh Posté le 08-01-2005 à 13:40:53    

ben ca dépend comment tu veux la remplir ...
tu veux mettre quoi en clef et quoi en valeur dans la HashTable ?
 
(utilise plutot une HashMap, et en la déclarant en tant que Map)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2005 à 13:41:22    

la méthode pour ajouter un couple clef/valeur dans une Map c'est map.put(clef, valeur)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2005 à 15:12:30    

Dans mon fichier j'ai par exemple : abc gdc abc aef adf (etc)
 
En fait je veux avoir à la fin la liste de tout les triplets et leurs occurences
 
J'ai fait :  
 
 while (st.hasMoreTokens())                
                  {
                   
                  String triplet = st.nextToken();
                   
                  /*Après séparation du triplet je veux le mettre dans ma hashtable
                   
                  nombreTriplets++;
                  Object key = new Object(nombreTriplets);
                  hashTriplets.put(key,triplet);
                  System.out.println(nombreTriplets+" : "+triplet);
                                     
                 
                  }  
                   
                  System.out.println("nombre total de triplets :" +nombreTriplets);
              }
 
Mais la conversion de types est incompatible...comment y remédier?

Reply

Marsh Posté le 08-01-2005 à 15:18:52    

Properties.load [:dawa]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-01-2005 à 15:26:39    

Properties.load?
ok
vais voir si jpeux faire quelque chose avec ca  
 
merci benou et real moins moins

Reply

Marsh Posté le 08-01-2005 à 15:27:55    

non mais en fait je crois que j'avais pu lu tout ton probleme...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-01-2005 à 15:28:39    

tu esperes faire quoi là:

                 Object key = new Object(nombreTriplets);

???


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-01-2005 à 15:34:14    

heu j'espérais mettre le nombre de triplets en clé...

Reply

Marsh Posté le 08-01-2005 à 15:37:39    

Mylies a écrit :

heu j'espérais mettre le nombre de triplets en clé...


et y'a un constructeur de la classe Object qui prend un int? tu devrais pas utiliser un objet plus adequat?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-01-2005 à 15:37:39   

Reply

Marsh Posté le 08-01-2005 à 15:45:21    

ben nan justement y'a pas d'objet qui prend de int. Le truc ce que dans la hashtable on doit stocker des objets et c'est la tout le problème...

Reply

Marsh Posté le 08-01-2005 à 15:47:35    

Reply

Marsh Posté le 08-01-2005 à 16:07:22    

Mylies a écrit :

Dans mon fichier j'ai par exemple : abc gdc abc aef adf (etc)
 
En fait je veux avoir à la fin la liste de tout les triplets et leurs occurences


si c'est une Liste que tu veux, utilise une List (ArrayList par exemple). Tu pourras calculer leur occurence après coup ...
 
si tu veux le faire au fur et à mesure, tu peux effectivement le faire avec une Map en associant un triplet (String) au nombre d'occurence déjà trouvées (Integer).
Mais la c'est plus de l'algorythmie que du java ... je te laisse chercher. Si tu trouves vraiment pas je te filerai la soluce.
Dans un premier temps, essaye de bien comprendre ce que c'est qu'une Map


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2005 à 16:33:29    

Je vais essayer avec la map car j'aurais besoin de faire d'autres manip. Sur tes bons conseils  vais lire la doc sur ce que c'est qu'une Map.
merci.

Reply

Marsh Posté le 08-01-2005 à 16:54:36    

the real moins moins a écrit :

non mais en fait je crois que j'avais pu lu tout ton probleme...


ben si, ca me semble bien Properties.load(). juste remplacer l'espace par un "=" si possible et le tour est joué

Reply

Marsh Posté le 08-01-2005 à 17:36:17    

lorill a écrit :

ben si, ca me semble bien Properties.load(). juste remplacer l'espace par un "=" si possible et le tour est joué


avec quoi comme valeur ?
et à mon avis c'est pas lui qui décide du format de son fichier (ca ressemble à un exo)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2005 à 23:23:12    

lorill a écrit :

ben si, ca me semble bien Properties.load(). juste remplacer l'espace par un "=" si possible et le tour est joué

je sais pas, un peu plus loin j'ai cru comprendre en lisant entre les lignes qu'il voulait stocker une map <Integer count, String s>


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-01-2005 à 13:07:37    

J'ai trouvé l'algo mais j'ai utilisé une hashtable et pas une hashmap. D'après ce que j'ai lu les méthodes sont identiques. La seule différence c'est que Hashmap est plus rapide mais non thread-safe. ca veut dire quoi non thread-safe svp?

Reply

Marsh Posté le 10-01-2005 à 17:19:12    

thread safe = tu peux t'en servir depuis 2 threads différents (en même temps) sans que ca pose problême.
 
de toute façon, que ce soit une hashmap ou une hashtable, elle devrait être déclarée en temps que Map.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 11-01-2005 à 16:21:25    

Je pense surtout que ta clé ne devrait pas être le nombre d'occurence...mais plutôt la chaîne de caratère et la valeur le nombre d'occurence de la dite chaîne. En bref :
tab("abc" )=>3
tab("gfd" )=>5 etc...
Comme ça tu connais combien d'occurence de chaque triplet tu as. Ensuite, si tu veux le nombre de triplets différents, c'est la taille de ton tableau de keys, et pour avoir le nombre total de triplets (avec les doublons), c'est la somme de toutes les valeurs.

Reply

Marsh Posté le 11-01-2005 à 16:39:48    

bha c'est déjà ce que j'ai conseillé au dessus ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-01-2005 à 16:39:40    

Vi c'est bien ce que j'ai fait merci. Sauf que pour le nombre total d'occurence j'ai juste fait une incrémentation avec les token.
 
Merci à vous!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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