Un bleu en POO
Résolu/Fermé
rwikus
Messages postés
871
Date d'inscription
lundi 29 décembre 2008
Statut
Membre
Dernière intervention
18 mai 2012
-
29 déc. 2008 à 02:42
rwikus Messages postés 871 Date d'inscription lundi 29 décembre 2008 Statut Membre Dernière intervention 18 mai 2012 - 29 déc. 2008 à 04:36
rwikus Messages postés 871 Date d'inscription lundi 29 décembre 2008 Statut Membre Dernière intervention 18 mai 2012 - 29 déc. 2008 à 04:36
6 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 déc. 2008 à 03:24
29 déc. 2008 à 03:24
En fait un Hashtable, c'est comme un tableau traditionnel, sauf que la clé ne sera pas un entier (enfin...pas obligatoirement) mais un objet, celui que tu veux.
Par exemple, si tu prends un objet de type string, c'est un peu comme si tu avais un tableau de ce genre:
monTableau["bidule"] = 4;
monTableau["machin"] = 5;
Sauf que pour écrire une valeur on utilise put, et pour lire on utilise get.
Pour l'instanciation, tu choisis le type de ta clé et celui de tes valeurs.
Si tu veux des chaines en clé et des entiers en valeurs tu fais comme ceci:
C'est vrai que la syntaxe est barbare, mais ça permet à Java de vérifier que tu ne fais pas de conneries plus tard dans ton code, du genre utiliser un entier comme clé alors qu'il devrait y avoir une chaine à la place etc...
Ensuite l'insertion d'une valeur.
Si tu veux faire ceci: tab["machin"] = 5;
Il va falloir que tu le fasses en java avec put:
A l'inverse, pour lire ce qu'il y a dans tab["machin"], tu fais comme ça:
Si tu veux parcourir toutes tes valeurs, alors il te faut l'itérareur de ce hashtable:
Bon le soucis c'est que je ne sais plus si cet iterator parcourt les clés ou les valeurs du hashtable. Et comme le site de java plante à cette heure-ci je peux pas vérifier.
Je suis parti du principe qu'il parcourt les valeurs. Mais s'il parcourt les clés, il faut faire comme ça:
Par exemple, si tu prends un objet de type string, c'est un peu comme si tu avais un tableau de ce genre:
monTableau["bidule"] = 4;
monTableau["machin"] = 5;
Sauf que pour écrire une valeur on utilise put, et pour lire on utilise get.
Pour l'instanciation, tu choisis le type de ta clé et celui de tes valeurs.
Si tu veux des chaines en clé et des entiers en valeurs tu fais comme ceci:
Hashtable<String,Integer> tab = new Hashtable<String,Integer>();
C'est vrai que la syntaxe est barbare, mais ça permet à Java de vérifier que tu ne fais pas de conneries plus tard dans ton code, du genre utiliser un entier comme clé alors qu'il devrait y avoir une chaine à la place etc...
Ensuite l'insertion d'une valeur.
Si tu veux faire ceci: tab["machin"] = 5;
Il va falloir que tu le fasses en java avec put:
tab.put("machin", 5);
A l'inverse, pour lire ce qu'il y a dans tab["machin"], tu fais comme ça:
tab.get("machin");
Si tu veux parcourir toutes tes valeurs, alors il te faut l'itérareur de ce hashtable:
Hashtable<String,Integer> tab = new Hashtable<String,Integer>(); tab.put("machin", 5); tab.put("truc", 7); for (Iterator i = tab.iterator(); i.hasNext(); ) { System.out.println((Integer) i.next()); // Va t'afficher 5 au premier passage, puis 7 }
Bon le soucis c'est que je ne sais plus si cet iterator parcourt les clés ou les valeurs du hashtable. Et comme le site de java plante à cette heure-ci je peux pas vérifier.
Je suis parti du principe qu'il parcourt les valeurs. Mais s'il parcourt les clés, il faut faire comme ça:
for (Iterator i = tab.iterator(); i.hasNext(); ) { String cle = (String)i.next(); System.out.println(tab.get(cle)); // Va t'afficher 5 au premier passage, puis 7 }
rwikus
Messages postés
871
Date d'inscription
lundi 29 décembre 2008
Statut
Membre
Dernière intervention
18 mai 2012
56
29 déc. 2008 à 03:35
29 déc. 2008 à 03:35
merci bcp car par ta reponse tu ma expliquer le fonctionement mé je n'arive pas a comprendre se code qui ne fonctione pa et qui est syntasiquement différent du tien........si vous pouvais me l'expliquer et m'enlever une foi pour toute l'enigme du fonctionement du hashtable je vous en serais tres reconnaissant.,merci
voila le code:
import java.util.Enumeration;
import java.util.Hashtable;
public class Test {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
ht.put(1, "printemps");
ht.put(10, "été");
ht.put(12, "automne");
ht.put(45, "hiver");
Enumeration e = ht.elements();
while(e.hasMoreElements())
System.out.println(e.nextElement());
}
}
voila le code:
import java.util.Enumeration;
import java.util.Hashtable;
public class Test {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
ht.put(1, "printemps");
ht.put(10, "été");
ht.put(12, "automne");
ht.put(45, "hiver");
Enumeration e = ht.elements();
while(e.hasMoreElements())
System.out.println(e.nextElement());
}
}
rwikus
Messages postés
871
Date d'inscription
lundi 29 décembre 2008
Statut
Membre
Dernière intervention
18 mai 2012
56
29 déc. 2008 à 03:39
29 déc. 2008 à 03:39
pardon et jai oublier de vous demander pourquoi aussi se code mém m'afiche sa:
été
hiver
automne
printemps
comment fonctione son parcour de fasson a se qu'il les sorte dans cette ordre..merci
été
hiver
automne
printemps
comment fonctione son parcour de fasson a se qu'il les sorte dans cette ordre..merci
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 déc. 2008 à 03:42
29 déc. 2008 à 03:42
Tu as une erreur?
rwikus
Messages postés
871
Date d'inscription
lundi 29 décembre 2008
Statut
Membre
Dernière intervention
18 mai 2012
56
29 déc. 2008 à 03:45
29 déc. 2008 à 03:45
non je n'ai aucune ereur seulmen je voudrais savoir comment fonctione mon code;;plus précisément comment il parcour la table et sur quel principe il se base pr me sortir les saison ans un tel ordre...c'est tout ..merci
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 déc. 2008 à 03:49
29 déc. 2008 à 03:49
Il y a va au pif, les hashtable ne sont pas triées :-)
Il me semble qu'il y a des hastables triées cependant mais je me souviens plus lesquelles....
Il me semble qu'il y a des hastables triées cependant mais je me souviens plus lesquelles....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
rwikus
Messages postés
871
Date d'inscription
lundi 29 décembre 2008
Statut
Membre
Dernière intervention
18 mai 2012
56
29 déc. 2008 à 03:55
29 déc. 2008 à 03:55
ah dacord je vois mais quel est la diférence entr mon code et le votre ..pourtan sa parle du méme objet mais c'est pas la mém procedure....quesqu'une Enumeration?qui est dans mon code car vous avez utiliser un iterateur qui est un pointeur c bien cela?...merci
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
29 déc. 2008 à 04:22
29 déc. 2008 à 04:22
Mouais, tu peux utiliser une enumération ou un iterateur.
Ca se ressemble, c'est pas tout à fait la même philosophie disons....
Ca se ressemble, c'est pas tout à fait la même philosophie disons....
rwikus
Messages postés
871
Date d'inscription
lundi 29 décembre 2008
Statut
Membre
Dernière intervention
18 mai 2012
56
29 déc. 2008 à 04:36
29 déc. 2008 à 04:36
ok merci ,,pardonez moi d'enavoir abuser en vous demandons trop de details,,,,pour ne pas vous déranger audela que je ne l'ai fais,,vous auriez pas un site qui pourais m'eclairer sur les hashtable ,leunumeration,les iterateur,,de fasson a se que je comprendrai le fonctionement de cet objet ....merci