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
Bonjour,
voila ,,jai commencer a etudier la programation orientée objet en langage java et j'ai des lacune en se qui concerne les collection d'objet plus exactement l'objet hashtable utilisant les couple (clé-valeur).........mon problem est de savoir comment se tableau fonctionne exactement,a quoi ses clé peuvent servir et comment se fais le parcour de se tableau?.............merci votre aide me permetra vrément d'avancer dans mes etudes car cela me bloque depuis tro lontemp

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
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:
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
}
0
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
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());

}
}
0
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
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
0
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
Tu as une erreur?
0
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
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
0
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
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....
0

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
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
0
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
Mouais, tu peux utiliser une enumération ou un iterateur.
Ca se ressemble, c'est pas tout à fait la même philosophie disons....
0
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
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
0