Structure dans laquelle on peut lier à toute key plusieurs elements pas un seul
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010
-
25 avril 2008 à 14:00
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010
-
26 avril 2008 à 01:51
Bonjour à tous,
SVP qui a une idée quelle la
structure qui rassemble à Hashtable mais dans laquelle on peut lier à
toute key plusieurs elements(pas un seul).
Bonne journée.
A voir également:
Structure dans laquelle on peut lier à toute key plusieurs elements pas un seul
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 25 avril 2008 à 14:31
Salut:
C'est vrai que dans un Hashtable on associe à chaque vlé une seule valeur, pour pouvoir attributer plusieurs valeurs à une seule clé, on peut utiliser un vecteur pour stocker les valeurs.
Hashtable<String, Vector<Object>> entries = new Hashtable<String, Vector<Object>>();
entries.put("key1", new Vector<Object>());
entries.put("key2", new Vector<Object>(
Arrays.asList(new Object[] {"value1", "value2"})));
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 25 avril 2008 à 14:53
Merci mais j'ai pas compri cette partie:
entries.put("key2", new Vector<Object>(
Arrays.asList(new Object[] {"value1", "value2"})));
est ce que je peux pas declarer un vector Vector v=new Vector();ds lequel je mes mes values v.add(elt1);v.add(elt2);... puis je fais:entries.put("keys1",v);
car franchement j'ai pas compri l'utilité deArrays.asList(new Object[] {"value1", "value2"})
que vous m'avez proposé.
une autre question:c'est quoi l'utilité de HashMap ou LinkedList ça peut pas etre une solution à résoudre mon probleme?sinon y a t-il une autre structure ds laquelle lier chaque key à +ieurs values,ça veut pas dire que votre solution ne me plait pas au contraire mais just pour avoir amelorer mes connaissances.
Merci bien pour votre aide
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 25 avril 2008 à 15:19
Salut:
La démarche que tu as utilisé est possible.
entries.put("key2", new Vector<Object>(
Arrays.asList(new Object[] {"value1", "value2"})));
Il s'agit de la création et initialisation des éléments du vecteur à la volée.
Suivant les contraintes du problème (type d'accès : accès direct, accès séquentiel, taille des données, ...) une structure de données peut s'avèrer plus utile que d'autres.
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 201625 25 avril 2008 à 15:58
Les hashtable/hashmap sont très utiles. Le temps de recherche d'un élément dans une hashtable ne dépend pas de la taille. Autrement dit, la recherche dans une hashtable de 10'000'000 ira aussi vite ou presque que dans une hashtable de 10 éléments.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 25 avril 2008 à 17:39
Salut,
Franchement je me sens bloquee ds ce genrre de Hashtable.
voici ma classe Ligne:
public
class Ligne {
public String
trans;
public String
vm;
public Hashtable<String, Vector<Object>>
typeReg;
public Vector
vReg;
public Ligne(String trans,String vm){
this.
trans= trans;
this .
vm =vm;
this.
typeReg=
new Hashtable<String, Vector<Object>>();}
En fait ds mon code j'ai une autre classe:
public
class Classe
{
public Vector
vect;
public void replaceType(String tr,String v,String type)
{
for(int i ==0;i<vect.size;i++)
{
Ligne ligne=(Ligne)
vect.get(i);
if((ligne.trans.equals(tr))&&(ligne.vm.equals(v)))
{
if(ligne.typeReg.containsKey(type))
{
je dois ajouter au vecteur du Hashtable corresondant à ce key un ensemble de String
}
}
}
}
Mon probleme est que j'ai pas trouvé comment acceder au vecteur du Hashtable de ma Ligne pour ajouter un ensemble de String en fait j'ai déclaré ds la classe Ligne un attribut Vector vReg
ds lequel je vais mettre ces String mais je sais pas si c'est just ou non.
SVP aidez moi je suis limitée par un delais tres court et je pratique pas bien le Hashtable
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 26 avril 2008 à 00:07
Bonsoir,
J'ai trouvé la solution pour acceder au vecteur de String correspondant à chaque key du Hashtable mais j'ai un autre probleme:
les elements que j'ajoute au vecteur du Hashtable de chaque Lignne seront aussi ajoutées ds les autres ligne du Vector vect de la classe Classe je pense que le Hashtable typeReg ajoute à chaque vecteur d'un key toutes les values correspondant à ce key de toutes les autres ligne du vector vect de Classe.voici la partie du code que j'ai essayé ds le main:
//Ces 2 methodeson les ajoute a la classe Ligne//
public String getEltVec(){
String s="";
Enumeration keys = this.typeReg.keys();
Enumeration values = this.typeReg.elements();
while (keys.hasMoreElements()) {
s=","+"le mot "+keys.nextElement()+" a le value "+ values.nextElement()+"\n";
}
return s;
}
public String toString(){
return(this.getTrans()+":"+this.getVm()+":"+this.getEltVec());
}
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 26 avril 2008 à 01:51
Bonsoir,bon....
lorsque je veux ajouter un elt(String) au Vector de du Hashtable typeReg de la classe Ligne j'ai fait :
Vector v= ligne.typeReg.get(type);
//doit me retourner normalement le Vector correspondant a ce key type du Hashtable typeReg
v.addElement(reg); // pour ajouter le String reg ds le Vrector Correspondant au key type
ligne.getTypeReg().put(type, v);
//je suis pas sure de cette ligne mais meme si elle est là ou non le resultat est toujours le meme
En fait le Vector v prend toujours le dernier String ajouté alors que ds mon code je veux ajouter chaque String à l'ensemble des values qui existent deja ds le Vector.