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

Android Discussion :

hashMap.get(key) ne fonctionne pas comme je l'attendais ?


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut hashMap.get(key) ne fonctionne pas comme je l'attendais ?
    Bonjour,

    donc j'ai un problème pour récupérer une valeur contenue dans un HashMap. Je désire récupérer cette valeur en donnant la clé.
    Ma valeur est un objet de type URL et ma clé est une String.

    Pour ce faire, j'ai créé cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	private static HashMap<String, URL> hmMots;
     
    //récupérer lien Image depuis string
    	public URL getImageURLfromMotString(String mot)
    	{
    		URL urlValue = (URL) hmMots.get(mot);	//à debugger
    		return urlValue;
    	}
    Quelqu'un a-t-il une idée de solution pour moi ?

    La finalité, c'est d'afficher une image à partir de cette URL. Mais j'avoue que cela fait plusiquers jours que je cale sur ces URL donc je suis en train de voir si je peux pas faire un hashMap<String, String> et afficher une image à parrtir d'une string (le String serait le chemin vers mon image)
    merci beaucoup !

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    C'est quel type d'application, web ?
    Que mets-tu dans ton url ?

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Bonjour,
    Bonjour !
    Quelqu'un a-t-il une idée de solution pour moi ?
    Pour avoir une solution, il faudrait avoir au départ un problème... et je n'ai pas trouver dans ton message la moindre question...

    Sinon, hashmap n'est pas bugué (crois moi, ça se saurait), et effectivement cela marche bien comme ça.

    Le "cast" n'est pas nécessaire (il n'est d'ailleurs que très rarement nécessaire en Java).
    Ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return hmMots.get(mot);
    devrait suffire comme code.

    Ensuite, je ne sais pas... tu ne donnes que cette partie du code, et aucun "problème".... il nous faudrait savoir déjà:
    1. Quel problème tu as.
    2. Le reste du code concernant cette partie (où hmMots est créé: le "new HashMap", et où hmMots est rempli).

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonsoir et merci pour votre intérêt !!!

    Je n'ai pas précisé le problème ..... merci de me le faire remarquer !

    En fait, au débug, lorsque j'arrive sur la ligne suivante, urlValue est toujours nulle et je ne comprends pas pourquoi puisqu'il n'y a pas d'erreurs détectée par Eclipse et puis aussi parce que je renseigne l'attribut comme il faut et que le retour de fonction est aussi bon !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String urlValue = hmMots.get(mot);
    Dans la valeur mot, je met "MAISON","POULE" ou "VOITURE" .... Android n'aime-t-il pas les poules en String ?????

    hmMot est créé comme ceci et j'ai vérifié qu'il contient bien les valeurs de dao.getbdd() donc cela devrait être OK :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		//Init de la DAO
    		dao = new Dao();
    		//Récupération de la liste de mots
    		hmMots = dao.getBdd();
    et dans la Dao je rempli le hashMap comme cela :
    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
    	public Dao(){
    		//Singleton
    		String s1 ="Poule";
    		String u1 = "file:/res/drawable-hdpi/poule_336.jpeg";
     
    		String s2 ="Voiture";
    		String u2 = "file:/res/drawable-hdpi/poule_336.jpeg";
     
    		String s3 ="Maison";
    		String u3 = "file:/res/drawable-hdpi/maison.jpeg";
     
     
    		bddImage = new HashMap<String, String>();
    		bddImage.put(s1, u1);
    		bddImage.put(s2, u2);
    		bddImage.put(s3, u3);
    	}
    Et j'ai aussi vérifié la dao (en mode débug aussi) et elle prend bien les bonnes valeurs !

    Merci à vous !!!

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu associes une URL avec la clef "Poule", tu ne risques pas de la trouver avec la clef "POULE", parce que ce sont deux chaînes différentes. L'instance utilisée comme clef doit valider cette expression clefGet.hashCode()==clefPut.hashCode() && clefGet.equals( clefPut ) (ou, si l'une des 2 est null, si l'autre est également null, elles sont considérées également comme égales).

    Si tu veux pouvoir utiliser ta map sans sensibilité à la casse, tu peux simplement forcer les clefs à être dans une casse (bas de casse ou haut de casse). Si tu fais map.put( "Poule".toLowerCase(), url ), tu pourras récupérer l'URL, par map.get("POULE".toLowerCase()).

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut


    Mais c'est bien sur !
    Comment n'ais-je pas remarqué cela !?!

    n'importe quoi !

    Merci beaucoup ....

  7. #7
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    C'est pour cette raison qu'il est conseillé d'utiliser des constantes (MA_CONSTANTE) en tant que clé, plutôt que des String ("poule"). Ca facilite l'écriture, permet d'éviter ce genre d'erreur, facilite la maintenance et l'évolutivité

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

Discussions similaires

  1. [D7][Mutex] ne fonctionne pas comme attendu !
    Par jbat dans le forum Delphi
    Réponses: 8
    Dernier message: 25/06/2007, 12h35
  2. [MySQL] Un formulaire qui ne fonctionne pas comme il faut (problèmes avec stripslashes & com)
    Par vincent.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/04/2007, 20h02
  3. requete qui ne fonctionne pas comme je shouterais
    Par domino_dj dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/04/2007, 12h27
  4. un if qui ne fonctionne pas comme je veux
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 27/07/2006, 15h12
  5. time.sleep() ne fonctionne pas comme souhaité
    Par Olivier_ dans le forum Général Python
    Réponses: 3
    Dernier message: 19/11/2005, 01h46

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