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 :

HashMap, élément non trouvé


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut HashMap, élément non trouvé
    salut

    dans un programme j'utilise un HashMap
    je tente d'obtenir une valeur via la méthode get...
    or ça crash car la v

    je me rends compte en debugant qu'un HashMap semble contenir un table et un entryset

    dans mon table j'ai plusieurs éléments de vide... j'ai les clé 2,1,3,5,4

    alors que dans mon entryset, j'ai les clé 4,5,3,1,2

    quand je tente de trouver la clé 1 j'ai droit à un beau plantage... java.lang.NullPointerException

    je comprends pas trop pourquoi...

    le get utilise le table?
    alors à quoi sert le entryset?

    merci de m'éclairer

  2. #2
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut
    EntrySet c'est une méthode de hashMap qui retourne une collection contenant les mappings de la map

    Si dans ta table, tu ajoute des éléments associés aux clefs 3,4,5 et que ceux des clefs 1,2 sont vides, celles-ci seront considérées comme mappées dans entrySet, hors comme aucune value n'est associée à ses deux clefs, elles contiennent null

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut
    Citation Envoyé par Tux++ Voir le message
    EntrySet c'est une méthode de hashMap qui retourne une collection contenant les mappings de la map

    Si dans ta table, tu ajoute des éléments associés aux clefs 3,4,5 et que ceux des clefs 1,2 sont vides, celles-ci seront considérées comme mappées dans entrySet, hors comme aucune value n'est associée à ses deux clefs, elles contiennent null
    chaque clé a une valeur...

    j'ai bien fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    map.put(1,"allo1");
    map.put(3,"allo3");
    map.put(4,"allo4");
    une image vaut mille mots

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Par défaut
    Le principe du HashMap est qu'il utilise une fonction de Hash (celle définie dans la classe Object et qui peut être surchargée pour chaque classe) sur la clé pour savoir à quel endroit dans sa table interne il le stocke.

    Si tu utilise maHashMap.put(2,"Allo2"); il va calculer le résultat de la fonction hash de la classe Integer pour la valeur 2. Cela peut lui donner le résultat 5 par exemple. Il stockera donc ce couple de valeur (2, "Allo2") sur le 5ième élément de sa table interne. Par contre un maHashMap.get(2) retournera "Allo2".

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut
    Citation Envoyé par baos! Voir le message
    Le principe du HashMap est qu'il utilise une fonction de Hash (celle définie dans la classe Object et qui peut être surchargée pour chaque classe) sur la clé pour savoir à quel endroit dans sa table interne il le stocke.

    Si tu utilise maHashMap.put(2,"Allo2"); il va calculer le résultat de la fonction hash de la classe Integer pour la valeur 2. Cela peut lui donner le résultat 5 par exemple. Il stockera donc ce couple de valeur (2, "Allo2") sur le 5ième élément de sa table interne. Par contre un maHashMap.get(2) retournera "Allo2".
    or actuelleent maHashMap.get(2) me retourne l'erreur déjà spécifié

    Set<Id> s = maHashMap.keySet();

    je vois bien ma clé 2...

    je comprends pu là...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Par défaut
    Peux tu envoyer le code qui plante ?

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut
    Citation Envoyé par baos! Voir le message
    Peux tu envoyer le code qui plante ?
    J'ai mis le code ici
    http://pastebin.espace-win.org/2206

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Par défaut
    Peux tu faire l'essai en redéfinissant la méthode de ta classe "Id".

    tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public int hashCode() {
         return new Long( this.id).hashCode();
    }
    Et tu me dis si cela fonctionne.

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

Discussions similaires

  1. [AC-2003] erreur 3265 élément non trouvé dans cette collection
    Par clfama dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/02/2012, 08h31
  2. Réponses: 6
    Dernier message: 22/09/2010, 17h37
  3. élément non trouvé dans une hashmap
    Par robert_trudel dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/08/2008, 19h41
  4. bdd : erreur 3265 élément non trouvé dans cette collection
    Par morgan47 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/07/2006, 09h52
  5. Erreur de "Élément non trouvé dans cette collection"
    Par charleshbo dans le forum Access
    Réponses: 4
    Dernier message: 04/05/2006, 18h42

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