gratifiant > comp.lang.* > comp.lang.java

Jérôme (13/12/2003, 18h50)
Bonjour à tous.
Voila j'ai un probleme je voudrai ajouter des éléments dans un Hashtable et
ça foire.
Voici mon code :

Je suis dans une classe A :
BaseRegles est un Hashtable

//Ajout d'une regle dans la base de regles
public void AjouterRegle(Regle Reg){
Reg.Afficher();
this.BaseRegles.put(Reg.GetIdent(), Reg);
}

Pourtant l'affichage de la règle me donne les données exactes.
A la fin de la fonction je retourne un objet contenant entre autres le
Hashtable BaseRegles.
Je l'affiche et il est vide.
Merci de votre aide !
A bientot
Jérôme
Jérôme (13/12/2003, 18h51)
Ha oui j'ai oublié de préciser j'ai exactement le meme probleme avec une
ArrayList d'ou le nom du post.
;)
Merci

"Jérôme" <prout> a écrit dans le message de news:
3fdb4344$0$17106$626a54ce...
[..]
Jérôme (13/12/2003, 20h21)
Reg.GetIdent() renvoie un type String

"mehdi kasmi" <mehdikasmi> a écrit dans le message de
news:8cd7
[..]
Jérôme (13/12/2003, 21h26)
Non je les affiche tous ils sont niquel pas un seul ne foire.

"mehdi kasmi" <mehdikasmi> a écrit dans le message de
news:8cd7
[..]
mehdi kasmi (14/12/2003, 04h54)
ta méthode Reg.GetIdent(), te renvoie quoi comme type ?
ta key ne doit pas etre d'un type primitif (int, boolean, double ....)

"Jérôme" <prout> wrote in message
news:54ce
[..]
mehdi kasmi (14/12/2003, 05h11)
est ce que un de tes string est null ?

"Jérôme" <nospam> wrote in message
news:55ce
[..]
Nicolas Delsaux (15/12/2003, 09h04)
Le 13.12 2003, Jérôme s'est levé et s'est dit : "tiens, si j'écrivais
aux mecs de fr.comp.lang.java ?"

> Bonjour à tous.
> Voila j'ai un probleme je voudrai ajouter des éléments dans un
> Hashtable et ça foire.


Salut, ta définition de ton problème ne me semble pas tout à fait assez
claire.

> Voici mon code :
> Je suis dans une classe A :
> BaseRegles est un Hashtable


Pourquoi BaseRegles est-il une Hashtable plutôt qu'une Map ?
> //Ajout d'une regle dans la base de regles
> public void AjouterRegle(Regle Reg){
> Reg.Afficher();
> this.BaseRegles.put(Reg.GetIdent(), Reg);

Es-tu sûr que ni ta clé ni ta valeur ne sont null ? si l'un des deux l'est,
une exception sera renvoyée.
> }
> Pourtant l'affichage de la règle me donne les données exactes.
> A la fin de la fonction je retourne un objet contenant entre autres le
> Hashtable BaseRegles.
> Je l'affiche et il est vide.


Qu'est-ce que tu affiches ? La Hashtable ? Et quand tu dis "elle est vide",
en es-tu sûr ?
Qu'est-ce qui est affiché exactement de cette hashtable ? Le résultat de
toString ?
Penses aussi à afficher le résultat de BaseRegles.size() !
Benoît Chauvet (15/12/2003, 09h52)
Jérôme wrote:
> //Ajout d'une regle dans la base de regles
> public void AjouterRegle(Regle Reg){
> Reg.Afficher();
> this.BaseRegles.put(Reg.GetIdent(), Reg);
> }


Cette méthode a l'air bonne (à part le fait que ta variable d'instance
BaseRegles et ta méthode GetIdent() sont préfixées par une majuscule ce qui
est contraire à l'usage, mais rien de grave en soi...)

> Pourtant l'affichage de la règle me donne les données exactes.
> A la fin de la fonction je retourne un objet contenant entre autres le
> Hashtable BaseRegles.
> Je l'affiche et il est vide.


Es-tu certain de travailler sur la même instance de ton objet ? Est-il
possible que tu remplisses BaseRegles pour un objet, et que tu en renvoies
un autre (dans lequel BaseRegles serait vide).

La ligne
this.BaseRegles.put(Reg.GetIdent(), Reg);
Renvoie-t'elle une exception ? (catchée dans le code appelant AjouterRegle)
Si tu as un NPE, il est possible que tu aies oublié d'initialiser BaseRegles
(par un BaseRegles = new Hashtable();)

Montres-nous aussi la routine d'affichage de BaseRegles. C'est peut-être
tout simplement elle qui est fausse.
Jérôme (15/12/2003, 21h38)
C'est bon g touvé.
Petit probleme d'allocation des objets stockés dans le hash.
Merci !
Jérôme

"Benoît Chauvet" <benoit> a écrit dans le message de
news:foq1
[..]
Discussions similaires