IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Itérer sur une hashmap et récupérer les clés


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut Itérer sur une hashmap et récupérer les clés
    Bonjour , voici mon code.
    J'aimerais récupérer tous les articles de type Article de la variable articles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HashMap<Article,String> articles = new HashMap<Article,String>();
                          //Ajout d'articles dans articles
     
    			Iterator it = (Iterator)this.articles.keySet().iterator();
    			while(it.hasNext()){		
    	                   Article at = ....... ;  // A COMPLETER
                               Integer it = ....... ;  //A COMPLETER
                               articlestemp.put(at, it)
    			}

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Par défaut
    Moi j'aimerai bien une bonne bière !

    http://java.developpez.com/faq/java/..._parcourir_map

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Par défaut
    Euh ....

    Article at = (Article)it.next();

    Par contre je ne sais pas ce que tu veux mettre dans ta variable de type Integer. En plus cette variable porte le même nom que ton itérator donc ca risque de poser problème !

  4. #4
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    C'est correct à la compilation mais ne marche pas à l'execution :

    Je pense que le fait que je spécifie <Article,Integer> M'empeche de faire un Iterateur correct dessus.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	HashMap<Article,Integer> articlestemp = new HashMap<Article,Integer>();
    		    Set set= articles.keySet () ; 
    		    Iterator iter = (Iterator)set.iterator () ; 
     
    			while(iter.hasNext()){
    				Object o = iter.next();
    				Article at = (Article)o;
    				if(!at.equals(a)){
    					Integer itt = (Integer)articles.get(a);
    					articlestemp.put(a,itt);
    				}
    			}
    me sort un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    javax.servlet.ServletException: java.util.HashMap$KeyIterator
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    java.lang.ClassCastException: java.util.HashMap$KeyIterator
    	mywebapp.classes.Panier.delArticle(Panier.java:28)
    	mywebapp.action.DelArticleAction.execute(DelArticleAction.java:30)
    	org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    	org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  5. #5
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Par défaut
    Ton code ne génère pas des erreurs de compil ?

    La variable articles est définie où ? Et la variable a ?

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Ton itérateur n'est pas bon: il faut itérer sur la collection de couples (clef + valeur) - donc sur le type Map.Entry<Article, String> - et pas sur la collection des clefs seulement.

    La fonction qui va bien ? HashMap::entrySet():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    HashMap<Article,String> articles = new HashMap<Article,String>();
    // ajoute de tes articles.
     
    Iterator<Map.Entry<Article, String>> it = articles .entrySet().iterator()
    while (it.hasNext()) {
        Map.Entry<Article, Integer> entry = it.next();
        Article a = entry.getKey();
        String s = entry.getValue();
        System.out.println("map["+a+"] = "+s);
    }
    ... ou l'écriture (bien plus légère) style Java 5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    HashMap<Article,String> articles = new HashMap<Article,String>();
    // ajoute de tes articles.
    for (Map.Entry<Article, String> entry : articles .entrySet()) {
        Article a = entry.getKey();
        String s = entry.getValue();
        System.out.println("map["+a+"] = "+s);
    }
    ... mais tout cela était parfaitement expliqué dans la FAQ dont le lien a été donné ci-dessus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Récupérer les clés d'un json après une requête ajax
    Par Nico_SAS dans le forum jQuery
    Réponses: 4
    Dernier message: 25/06/2014, 14h18
  2. [MVC] Iterer sur une Hashmap avec les tag spring mvc options
    Par Ytsaeb dans le forum Spring Web
    Réponses: 0
    Dernier message: 31/01/2012, 14h35
  3. [javascript] récupérer les "clés" d'un tableau
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2006, 10h13
  4. [STRUTS] Itérer sur une HashMap
    Par s.grenet dans le forum Struts 1
    Réponses: 5
    Dernier message: 06/04/2005, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo