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

Langage Java Discussion :

récupérer une valeur d'un HasMap


Sujet :

Langage Java

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut récupérer une valeur d'un HasMap
    Bonjour j'ai un petit problème pour récupérer une valeur d'un HasMap

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
       /**
         * Define an before from this room.
         */
    public void setBefore(Room neighbor, int type)
        {
        	typeImage.put(neighbor, type);
        }
     
      /**
         * Return the image that is corresponded
         */ 
    public String getImage(Room beforeRoom)
        {
        	String image = "";
        	int type;
     
        	Set keys = typeImage.keySet();
            for(Iterator iter = keys.iterator(); iter.hasNext(); )
            	if (iter.next() == beforeRoom)
            	{
            		type = /* je voudrai trouver le type */
            	}
     
        	 switch (type) {
             case 1:  image = img1;
             break;
             case 2:  image = img2;
             break;
        	 }
        	return image;
        }
    dans l'idée je veux savoir d'où l'utilisateur vient (beforeRoom) et suivant cela je veux afficher soit l'image 1 soit l'image 2, mais pour savoir ça il me faut trouver le type.

    A vrai dire je sais pas quelle méthode utilisé pour renvoyer un entier (si possible) ?

    Si vous avez des idées, voir des réponses, je suis preneur bien évidement

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    C'est la méthode Map.get que tu cherche ?

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Tu sais que le principe de la map, c'est justement que tu n'as pas besoin de parcourir à la main toutes les clés ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public String getImage(Room beforeRoom)
        {
        	String image = "";
        	int type = typeImage.get(beforeRoom);
     
        	switch (type) {
             case 1:  image = img1;
             break;
             case 2:  image = img2;
             break;
        	}
        	return image;
        }
    Edit : à la relecture, il serait quand même plus propre de faire un test sur la nullité du retour de la map (qui devra être un Integer), ça t'évitera un NullPointerException déclenché par l'auto-outboxing.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    Merci pour vos réponses, et j'avais essayé la méthode get, mais il me renvoit l'erreur suivante : "this mismatch : can't convert from objet to int."

    Me voilà bien embêté ^^

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    Tu peux mettre l'erreur complete ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Deux questions :
    - Est-ce que tu as mis des paramètres à ta map ? Du genre Map<Room, Integer>
    - Pourquoi ne pas mettre directement le type de l'image dans la map plutôt qu'un entier ?

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    voilà le screen de l'erreur


    @glebreton
    voilà comment je l'initialise :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    private HashMap typeImage;
    typeImage =new HashMap();
     
     public void setBefore(Room neighbor, int type)
        {
        	typeImage.put(neighbor, type);
        }
    Et en effet c'est pas bête du tout de mettre le lien de l'image à la place du type !! Mais le problème (pour moi) serait le même, c'est à dire récupérer cette valeur.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Quand tu déclares ton type, utilise de préférence une interface.
    Ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Map<Room, Integer> typeImage = new HashMap<Room, Integer>();
    Ce qu'il y a entre les chevrons, ce sont les types utilisés par la map. Donc là, on a le type Room pour la clé, et Integer pour la valeur.
    Tu remplaces Integer par String si tu veux mettre directement le lien de l'image.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    Pour resumer ce qu'a dit glebreton, sa donne sa :

    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
    24
    25
     
    private HashMap typeImage = new HashMap<Room, String>();
     
     
       /**
         * Define an before from this room.
         */
    public void setBefore(Room neighbor, int type)
        {
            switch (type) {
             case 1:  typeImage.put(neighbor, img1);
             break;
             case 2:  typeImage.put(neighbor, img2);
             break;
        	 }
        }
     
      /**
         * Return the image that is corresponded
         */ 
    public String getImage(Room beforeRoom)
        {
        	String image = typeImage.get(beforeRoom);
        	return image;
        }


    EDIT: grille

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    yes merci les gars, c'est exactement ca

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

Discussions similaires

  1. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  2. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  3. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49
  4. Réponses: 2
    Dernier message: 17/06/2005, 13h38
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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