Remplir une hastable à partir d'un fichier - Java - Programmation
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)
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)
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?
Marsh Posté le 08-01-2005 à 15:18:52
ReplyMarsh 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
Marsh Posté le 08-01-2005 à 15:27:55
non mais en fait je crois que j'avais pu lu tout ton probleme...
Marsh Posté le 08-01-2005 à 15:28:39
tu esperes faire quoi là:
Object key = new Object(nombreTriplets); |
???
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?
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...
Marsh Posté le 08-01-2005 à 15:47:35
http://java.sun.com/docs/books/tutorial/java/data/
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) |
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
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.
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é
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)
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>
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?
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.
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.
Marsh Posté le 11-01-2005 à 16:39:48
ReplyMarsh 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!
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();
}