Parcourir hashtabe en java
Résolu/Fermé
alaa16
Messages postés
11
Date d'inscription
samedi 13 septembre 2008
Statut
Membre
Dernière intervention
13 avril 2010
-
18 sept. 2008 à 16:04
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 22 déc. 2008 à 15:16
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 22 déc. 2008 à 15:16
A voir également:
- Parcourir hashmap java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Télécharger jeux java gameloft gratuit - Forum Mobile
- Java décompiler - Télécharger - Langages
2 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
18 sept. 2008 à 23:45
18 sept. 2008 à 23:45
Bonsoir,
Juste pour compléter la très bonne réponse de Sandul, deux petits commentaires :
- Ta méthode est la bonne, mais utilise plutôt des itérateurs plutôt que des énumérations (l'API java le conseille : NOTE: The functionality of this interface is duplicated by the Iterator interface. In addition, Iterator adds an optional remove operation, and has shorter method names. New implementations should consider using Iterator in preference to Enumeration. )
Iterator<Roman> it = h.value().iterator();
while ( it.hasNext()) {
System.out.println(it.next());
}
- Deuxième conseil inutile : Utilise plutôt une HashMap qu'une Hashtable, pour des raisons de performances. La différence est que la hashtable est synchronized, donc dans le cas où ton application n'est pas multithreadée, et que tu n'as pas d'accès concurrents sur cet objet, utilise plutôt une HashMap. Dans le cas inverse, l'utilisation de la Hashtable est justifié, donc ne tiens pas compte de ce commentaire.
Bien cordialement,
Juste pour compléter la très bonne réponse de Sandul, deux petits commentaires :
- Ta méthode est la bonne, mais utilise plutôt des itérateurs plutôt que des énumérations (l'API java le conseille : NOTE: The functionality of this interface is duplicated by the Iterator interface. In addition, Iterator adds an optional remove operation, and has shorter method names. New implementations should consider using Iterator in preference to Enumeration. )
Iterator<Roman> it = h.value().iterator();
while ( it.hasNext()) {
System.out.println(it.next());
}
- Deuxième conseil inutile : Utilise plutôt une HashMap qu'une Hashtable, pour des raisons de performances. La différence est que la hashtable est synchronized, donc dans le cas où ton application n'est pas multithreadée, et que tu n'as pas d'accès concurrents sur cet objet, utilise plutôt une HashMap. Dans le cas inverse, l'utilisation de la Hashtable est justifié, donc ne tiens pas compte de ce commentaire.
Bien cordialement,
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
18 sept. 2008 à 16:11
18 sept. 2008 à 16:11
Salut,
C'est normal d'avoir ceci à la console, car tu as
==> le nextElement te retourne un objet de type Roman. Il y a deux solutions:
1. Tu remplaces ce que tu écris à la console par
2. Ou bien tu rajoutes une méthode toString() à la classe Roman pour lui dire ce qu'elle doit écrire lorsque l'on lui demande de s'imprimer. La méthode toString pourrait retourner par exemple ce que getNomTitre() retourne à présent. Si tu rajoutes toString(), il n'est plus nécessaire de modifier le System.out.prinltn.
++
C'est normal d'avoir ceci à la console, car tu as
System.out.println((Roman) e.nextElement());
==> le nextElement te retourne un objet de type Roman. Il y a deux solutions:
1. Tu remplaces ce que tu écris à la console par
System.out.println(((Roman) e.nextElement()).getNomTitre());
2. Ou bien tu rajoutes une méthode toString() à la classe Roman pour lui dire ce qu'elle doit écrire lorsque l'on lui demande de s'imprimer. La méthode toString pourrait retourner par exemple ce que getNomTitre() retourne à présent. Si tu rajoutes toString(), il n'est plus nécessaire de modifier le System.out.prinltn.
++
22 déc. 2008 à 10:49
réellement ce n'est pas un probleme j'ai implémenter ma classe hashtable1 a pour but de stocker des clients avec leur code mais mon probleme est dans la fonction affichage je veut qu'il affiche la cle avec les informations de l'objet client
donc mon probleme est d'afficher les cle comme par exemple cle=e de client =saif
merci
voila mon code
import java.util.*;
class Hashtable1
{
Hashtable m=new Hashtable();
public boolean remplirHash(String s,Client c)
{
if(!m.containsKey(s))
{
m.put(s,c);
return true;
}
else
{
System.out.println("cle deja utilise");
return false;
}
}
public void affichage()
{
Enumeration nb=m.elements();
System.out.println("l'ensemble des clients est ");
while(nb.hasMoreElements())
{
Object key=nb.nextElement();
Client value=(Client)m.get(key);
System.out.println("les informations sont "+key );
}
}
Client getClient(String cle)
{
if(m.containsKey(cle))
{
Client value=(Client)m.get(cle);
return value;
}
else
{
System.out.println("cle inexistante ");
return null;
}
}
}
22 déc. 2008 à 11:16
J'ai cru voir passer ce post, et une personne t'avait aiguillée vers la surcharge de la méthode toString() si je me rappelle bien.
Voici comment c'est possible :
Comme le disait ton autre interlocuteur, l'autres solution serait de surcharger la méthode toString() de Client (et surcharger aussi la méthode hashCode()). Avec ça, plus besoin de getName().
Cordialement,
22 déc. 2008 à 15:16
Décidément je dis pas mal de bêtises en ce moment moi...
Cordialement