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 :

ContainsKey sur HashMap


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 42
    Points
    42
    Par défaut ContainsKey sur HashMap
    Bonjour,

    je rencontre actuellement un problème avec l'utilisation d'un containsKey sur une HashMap.

    Voici mon conde :

    Je possède deux HashMap. Je récupère la liste des clés d'une des HashMap et je veux regarder si chacune de ces clé est contenu dans l'autre HashMap.

    Si je fais ceci, cela ne fonctionne pas :
    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
    	Set setCles = hmConf.entrySet();
    		Iterator itCles = setCles.iterator();
    		while(itCles.hasNext()){
    			log.debug("Entrée dans le while de récupération des clés");
    			String cle = itCles.next().toString();
    			log.debug("Clé de la HashMap Conf : "+cle);	
    			//test si la cle est présente dans la hashMap GED
    			if(hmGED.containsKey(cle)){
    				log.debug("Ajout des datas dans les objets de la HashMap Conf");
    				DocumentCritereVO docCritereGED = (DocumentCritereVO)hmGED.get(cle);
    				DocumentCritereVO docCritereConfig = (DocumentCritereVO)hmConf.get(cle);
    					docCritereConfig.setRib(docCritereGED.getRib());
     
    					//Tri de la liste de date
    					DateComparator comparator = new DateComparator();
    					Collections.sort(docCritereGED.getListeDate(),comparator);
     
    					docCritereConfig.setListeDate(docCritereGED.getListeDate());
    			}else{
    				log.debug("Suppression de l'objet dans la HashMap conf");
    				hmConf.remove(cle);
    			}
    		}
    alors que si je fais ceci, il reconnait bien la clé et rentre bien dans le if:

    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
    Set setCles = hmConf.entrySet();
    		Iterator itCles = setCles.iterator();
    		while(itCles.hasNext()){
    			log.debug("Entrée dans le while de récupération des clés");
    			String cle = itCles.next().toString();
    			log.debug("Clé de la HashMap Conf : "+cle);	
    			//test si la cle est présente dans la hashMap GED
    			if(hmGED.containsKey("RELEV101")){
    				log.debug("Ajout des datas dans les objets de la HashMap Conf");
    				DocumentCritereVO docCritereGED = (DocumentCritereVO)hmGED.get(cle);
    				DocumentCritereVO docCritereConfig = (DocumentCritereVO)hmConf.get(cle);
    					docCritereConfig.setRib(docCritereGED.getRib());
     
    					//Tri de la liste de date
    					DateComparator comparator = new DateComparator();
    					Collections.sort(docCritereGED.getListeDate(),comparator);
     
    					docCritereConfig.setListeDate(docCritereGED.getListeDate());
    			}else{
    				log.debug("Suppression de l'objet dans la HashMap conf");
    				hmConf.remove(cle);
    			}
    		}
    Quelqu'un aurait une idée?
    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Bonjour,

    quel est le type de la clé dans la HashMap hmConf ?

    Quel est le résultat de la ligne log.debug("Clé de la HashMap Conf : "+cle); ?
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par MigouW Voir le message
    Bonjour,

    quel est le type de la clé dans la HashMap hmConf ?

    Quel est le résultat de la ligne log.debug("Clé de la HashMap Conf : "+cle); ?
    Dans les deux HashMap, les clés sont des String.
    J'ai fais afficher toutes les clés des deux HashMap par le log.debug et voici deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [23/05/11 10:31:14:756 CEST] 000001e8 SystemOut     O 10:31:14,756 DEBUG ConsultationAction : performAction - Clé de la HashMap Conf : RELEV101=com.bnpparibas.dematpro.presentation.viewobject.consultation.DocumentCritereVO@5d775d77
     
    [23/05/11 10:31:14:756 CEST] 000001e8 SystemOut     O 10:31:14,756 DEBUG ConsultationAction : performAction - Clé de la HashMap Conf : RELEV101=com.bnpparibas.dematpro.presentation.viewobject.consultation.DocumentCritereVO@55025502

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Je ne suis pas sur mais a mon avis, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(hmGED.containsKey(cle)){
    compare les clé sur leurs références et donc renvoie faux.


    Essaye avec la ligne suivante (si ce n'est déjà fait):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(hmGED.containsKey(cle.toString())){
    EDIT :
    Tes HashMap sont elles déclarées en tant que HashMap<String,...> ?
    Tu peux aussi essayer de typer le Set de retour et l'iterator en Set<String> et en Iterator<String>
    Je pense que mon Edit est plus important que la solution proposé avant.
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Je viens de réessayer même si j'avais l'impression de l'avoir déjà fait, on sait jamais!
    Mais le résultat est le même!
    Et en plus, je fais déjà un toString() lorsque je récupère la clé via mon Iterator.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    J'ai du Editer pendant que tu essayais(désolé j'ai des lacunes en inteligence parfois, ou tout le temps je sais plus ^^)

    Tes HashMap sont elles déclarées en tant que HashMap<String,...> ?
    Tu peux aussi essayer de typer le Set de retour et l'iterator en Set<String> et en Iterator<String>
    Je pense que mon Edit est plus important que la solution proposé avant.
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par MigouW Voir le message
    J'ai du Editer pendant que tu essayais(désolé j'ai des lacunes en inteligence parfois, ou tout le temps je sais plus ^^)

    Tes HashMap sont elles déclarées en tant que HashMap<String,...> ?
    Tu peux aussi essayer de typer le Set de retour et l'iterator en Set<String> et en Iterator<String>
    Je pense que mon Edit est plus important que la solution proposé avant.
    J'ai typé mes HashMap, mes Set ainsi que mes Iterator :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    HashMap<String, DocumentCritereVO> hmConf = new HashMap<String, DocumentCritereVO>();
    HashMap<String, DocumentCritereVO> hmGED = responseVO.getHmGED();
    Set<Entry<String, DocumentCritereVO>> setCles = hmConf.entrySet();
    Iterator<Entry<String, DocumentCritereVO>> itCles = setCles.iterator();
    mais aucun changement, toujours le même problème!

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Je suis un c..,

    Ton objectif dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setCles = hmConf.entrySet();
    est de récupérer les clés de ta HashMap, alors que tu récupère un Ensemble descriptif de ta HashMap, tu devrais utiliser la méthode keySet() qui te renvoie juste l'ensemble des clés.

    P.S. : et tu peux oublier tout ce que j'ai dis avant
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par MigouW Voir le message
    Je suis un c..,

    Ton objectif dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setCles = hmConf.entrySet();
    est de récupérer les clés de ta HashMap, alors que tu récupère un Ensemble descriptif de ta HashMap, tu devrais utiliser la méthode keySet() qui te renvoie juste l'ensemble des clés.

    P.S. : et tu peux oublier tout ce que j'ai dis avant
    C'était donc ça!!!
    Merci beaucoup...

  10. #10
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Désolé, j'ai du mal le lundi (journée la moins productive de la semaine).

    de rien.

    Pense au bouton de tag en bas
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par MigouW Voir le message
    Désolé, j'ai du mal le lundi (journée la moins productive de la semaine).

    de rien.

    Pense au bouton de tag en bas
    Pas de problème! Au moins j'ai ma solution c'est le plus important!!
    Idem pour moi, pas la plus productive de la semaine! surement tout comme le vendredi aprem!!

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

Discussions similaires

  1. containsKey sur une LinkedHashMap
    Par HannibAlBundy dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 23/06/2009, 10h18
  2. Logic iterate sur HashMaps imbriquées
    Par MASSAKA dans le forum Struts 1
    Réponses: 2
    Dernier message: 13/03/2008, 15h17
  3. récupérer nombre itérations vers une valeur sur hashmap
    Par flora806 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 26/02/2008, 14h43
  4. calcul sur hashmap
    Par flora806 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 16/11/2007, 13h52
  5. [Struts] logic:iterate sur HashMap
    Par romdelf dans le forum Struts 1
    Réponses: 36
    Dernier message: 02/12/2005, 17h03

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