Hashset

cs_mikito Messages postés 14 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 8 septembre 2004 - 5 avril 2004 à 18:40
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007 - 6 avril 2004 à 09:17
bonjour à tous, voila ma question :

quand je fais un hashset et apres je fais un add sur cet hashset, ça me dit si oui ou non, l'objet se trouve déja dans le Set, mais comment je peux savoir en quelle position il se trouve?

ce que je veux obtenir :
exemple : j'ai un tableau de string (bonjour, bye, ciao)
et je fais un add du srting bye, et je veux ken retour, j'ai : "bye se trouve en 2ème position"
ya bien une fonction ki doit faire ça?

3 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 avril 2004 à 20:03
GodConan :clown)

je connai pas le hashset mais par exemple sur une hashtable tu ne peut pas predire la position de chac entrer c le princip meme de ce type de collection. Ce sont les Vector qui sont rangé...

++
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
6 avril 2004 à 08:57
Le principe meme d'une hashset, comme toute table de hash digne de ce nom, c'est de balancer les elements dans ta structure un peu en vrac et de les retrouver par un systeme de clef calculée a partir du type de l'objet.
Donc il n'y a pas de notion d'ordre a proprement parlé....

Apres, si tu as besoin de savoir a quelle position il se trouve, tu n'as plus qu'a passer par un itérateur en testant la valeur des elements un par un......

Si tu as besoin que tes elements soient ordonnés, prefere le TreeSet au HashSet, mais les temps d'accés sont plus longs, ca depends de ce que tu veux faire...
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
6 avril 2004 à 09:17
p.s

si tu veux tester la presence d'un element sur un hash/treeSet, utilise plutot la methode contains(); c'est plus propre que de faire un add.

Je precise aussi que l'interet d'un telle structure est la rapidité avec laquelle tu va retrouver un element (bien plus rapide qu'une recherche dans un tableau).

Si tu ne modifies plus ta structure et que tu as besoin de retrouver tes elements plus rapidement que par iterateur, tu peux faire, en fonction de la relation que souhaites:

numero de l'element --> element, tu peux transformer ta set en tableau et acceder aux elements du tableau par index.

element --> numero de l'element, la c'est plus délicat, tu peux transformer la set en hashmap avec la string en tant que clef et la position en tant que valeur.

La transformation d'une structure a l'autre prendra du temps, mais apres, les temps d'accès seront plus agreables.

Encore une fois, tout depends de ce que tu veux faire.
0
Rejoignez-nous