VIVEZ LE
FOOTBALL !

Posez votre question Signaler

JAVA parcourir une hashmap

usdy 233Messages postés 4 août 2008Date d'inscription 26 juin 2011Dernière intervention - Dernière réponse le 28 sept. 2009 à 22:12
Bonjour,
Je souhaite parcourir une hashmap pour voir le contenu des valeurs de ma hashmap en faisant une sorte de boucle for mais je ne sais pas du tout comment faire sur une hashmap.
Merci de m'éclaircir si jamais quelqu'un s'y connait en hashmap.
a+
Lire la suite 

JAVA parcourir une hashmap »

16 réponses
Réponse
+13
moins plus
Lu,

8 heures? omg. Permier essai: http://www.google.fr/...

Un clic sur la 1ère réponse nous donne ceci: http://www.stanford.edu/...

Si on veut te facturer plus de temps que 2 minutes, ce de l'arnaque, ne paye pas =)

Sinon, pour répondre à ta question, tu n'es pas obligée d'utiliser un iterator. Le simple fait de faire une boucle sur les valeurs de l'ensemble des clefs suffit. Et en Java 5+ c'est assez élégant / lisible. Genre

Map<String, String> hashMap = new HashMap<String, String>();
for (String mapKey : hashMap.keySet()) {
	// utilise ici hashMap.get(mapKey) pour accéder aux valeurs
}


++
Ajouter un commentaire
Réponse
+1
moins plus
personne n'aurait une toute petite idée ???
Ajouter un commentaire
Réponse
+0
moins plus
merci pour ton aide,

pour info j'ai cherché la réponse à ma question pendant 8 heures et comme tout ce que j'ai testé bug, je me suis dit que je pourrai peut être trouver de l'aide sur le forum...

Pour revenir à mon bug, d'après toi je ne suis pas obligée d'utiliser un iterator ? seules les méthodes de Hashmap suffisent?
Ajouter un commentaire
Réponse
+0
moins plus
merci :)

j'ai fait ceci mais j'ai une erreur au niveau du string value:
mais je vais essayé ce que tu m'as proposé mais je pense avoir une ancienne version de java donc je sais pas si ca va marché

while (mahashmap != null ) {
for( Iterator ii = mahashmap.keySet().iterator(); ii.hasNext();) {
String key = (String)ii.next();
String value = (String) mahashmap.get(key);

System.out.println("valeur de la cle : "+ key);
System.out.println("valeur de la valeur : "+ value);
}
Ajouter un commentaire
Réponse
+0
moins plus
Tu as têtre ton erreur car tu n'as pas des String (ou pas uniquement que des String) dans ta Map. Vérifie ce point.

Dans un autre ordre d'idées, pourquoi ton while (mahashmap != null ) ?

Il te faut le JDK 1.5 ou plus récent pour compiler mon bout de code.
usdy- 28 sept. 2009 à 18:48
c'est bon j'ai trouvé !!! merci sandul

j'ai fait : Object val = mahashmap.get(key);

pour le while, je me suis trompée => j'ai essayé avec if et ça marche!!
une dernière petite question stp : pour comparer le contenu de deux hashmaps, je peux refaire le même prog en changeant juste le nom de la hashmap puis comparer les variables de clés et de valeurs ?
Ajouter un commentaire
Réponse
+0
moins plus
pour comparer le contenu de deux hashmaps, je peux refaire le même prog en changeant juste le nom de la hashmap puis comparer les variables de clés et de valeurs ? <== j'avoue ne pas trop suivre la démarche que tu proposes xD

A la va-vite, je ferais ceci:
- tester l'égalite des size
- tester si hmap1 est incluse dans hmap2
- tester si hmap2 est incluse dans hmap1

L'inclusion de hmap1 dans hmap2 se ferait via le balayage de hmap1 (avec ta boucle) et un test pour voir si la key ainsi que la valeur sont dans hmap2.

++
usdy- 28 sept. 2009 à 19:04
en fait dans ma premiere hashmap1 contient <string, int>, ma seconde hashmap contient <String, <String, int>>
en fait je veux comparer le string de ma 1ere hashmap avec le 2eme string de la 2eme hasmap.
Ajouter un commentaire
Réponse
+0
moins plus
Poste la déclaration exacte de la hashmap2 en syntaxe Java5 ou bien fais une description...
<String, <String, int>>
ne veut rien dire. Les keys sont des String, OK. Mais les valeurs sont des quoi? Les paires <String, int> n'existent pas en tant qu'Object Java...
usdy- 28 sept. 2009 à 19:21
en fait ma hashmap contient une autre hashmap
Ajouter un commentaire
Réponse
+0
moins plus
Ta hashmap contient une seule paire <key, value> ? Ou bien plusieurs ? Dans ce dernier cas, il conviendrait de dire "ma hashmap contient des hashmap comme valeurs". Est-ce bien le cas ? Si oui, décris encore ton test à faire... Tu as UNE hashmap (hashmap1) et une MULTITUDE de hashmaps (les valeurs possibles de hashmap2). Que veux-tu comme comparaison?

Il serait pas mal de faire un tit exemple très simple. Genre

hmap1
<("a", 1), ("b", 2)>

hmap2
??

++
usdy- 28 sept. 2009 à 19:42
voici un exemple :

hashmap1 = {poire=3, sucre=2}

hashmap2 = {tarte = {poire=1, sucre=1}}

je veux verifier si dans ma hashmap1, le nombre de poire et de pommes est bien superieur au nombre
présent dans la hashmap2
Ajouter un commentaire
Réponse
+0
moins plus
Humpf, toujours pas clair xD Je fais la fine bouche, j'sais... xD

Relis-toi. Avant
en fait je veux comparer le string de ma 1ere hashmap avec le 2eme string de la 2eme hasmap.


à présent
je veux verifier si dans ma hashmap1, le nombre de poire et de pommes est bien superieur au nombre
présent dans la hashmap2


Tu seras d'accord que les 2 cahiers de charge ont peu de choses en commun. Retenons le 2ème, donc. Tu veux vérifier que c'est TOUJOURS le cas (i.e. pour CHAQUE fruit) d'avoir un nombre supérieur dans la map imbriquée par rapport au nombre présent dans la hashmap1?

Si c'est le cas (et si, aussi, ta hashmap2 contient uniquement UNE paire key-value, chose que tu n'as pas confirmé), tu pourrais faire ceci:

1. tu fais une extraction de la hashmap imbriquée. Disons qu'elle s'appelle hmap3 (pour brouiller les pistes xD)
2. tu parcours hashmap1 en suivant ses keys. Pour chaque key (qui est un fruit), tu feras donc:
- déterminer sa valeur associée (=le nombre de fruits)
- chercher sa valeur dans hmap3
- comparer les deux valeurs et interrompre la boucle si la condition que tu veux vérifier n'est pas respectée

OKi comme ça?
usdy- 28 sept. 2009 à 21:15
merci !!!

j'ai quasi fini ma fonction sauf qu'à la fin j'ai un char que je voudrais absolument convertir en int mais je crois que c'est impossible non?
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Si, c'est possible, pourquoi pas... Tu as un char ou un string ?
char c = '8';
int convertedValue = Character.digit(c, 10);


ou bien
String s = "8";
int convertedValue = Integer.valueOf(s).intValue();


++
Ajouter un commentaire
Réponse
-3
moins plus
Bonjour,
Une question comme ça trouve sa réponse dans la javadoc de sun qui est gratuite, ne l'oublions pas

Comme toute collection présentant l'interface Map, il y a une méthode keySet() qui retourne un Set avec les clés, et une méthode values() qui retourne une Collection.
Dans les deux cas, tu peut obtenir un iterator, ou utiliser le mécanisme de for de la version 1.5 pour parcourir ces listes.

L'informatique, ce n'est pas faire que ce qu'on connaît, c'est aussi et surtout explorer ce dont on a besoin, et c'est d'ailleurs ça qui est intéressant.
Cherchez, les gars avant de poser une question, cherchez !
Ajouter un commentaire
Ce document intitulé « JAVA parcourir une hashmap » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?