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 en Java


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut HashMap en Java
    Bonjour,

    est ce possible de donner plusieurs valeurs à une clé dans une HashMap, merci beaucoup pour votre aide...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Il faut que tu définisses une HashMap qui contient des List :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<TypeCle, List<TypeValeur>> map;

  3. #3
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    Par exemple je fais ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HashMap nomEtPasse = new HashMap<String, List<String>>();
     
     
         nomEtPasse.put("nom/mot de passe", "toto/toto");
           nomEtPasse.put("nom/mot de passe", "test/test");
    Merci d'avance...

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Je comprends pas l'exemple.

    Normalement, pour un titre pareil je conseillerais d'utiliser HashMultiMap<K, V> de la bibliothèque Guava.
    Mais peut-être que les choses pourraient être plus simple.

    Genre, si à chaque clé tu associes un login et un mot de passe, tu n'as pas besoin d'associer plusieurs valeurs à une clé. Il te suffit de créer une classe Credentials qui contient un login et un mot de passe, et d'associer un Credentials à chaque clé.

  5. #5
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    mais dans mon cas je veux mettre dans une seule clé plusieurs valeurs vous voyez ???

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Ceci devrait faire l'affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HashMap nomEtPasse = new HashMap<String, List<String>>();
    nomEtPasse.put("nom/mot de passe", new ArrayList<String>());
    nomEtPasse.get("nom/mot de passe").add("toto/toto");
    nomEtPasse.get("nom/mot de passe").add("test/test");

  7. #7
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    effectivement où est le problème?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    HashMap<String, List<String>>
    HashMap<String,String[]>
    HashMap<String,Tuple>
    //Tuple  est un objet à toi contenant ....ce que tu veux

  8. #8
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomEtPasse.get("nom/mot de passe").add("toto/toto");
    celle la ne devrai pas fonctionner non ???, je comprends que vous ayez ajouté une liste mais pas le fait que vous fetes un add sur un String et la liste est-elle liée au nom/mot de passe ???? merci pour votre aide...

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah essaie au moins.

    Dans ta Map tu as un couple clef(une chaine)/Valeur (une liste).

    Donc quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomEtPasse.get("nom/mot de passe")
    Je récupère une référence sur la liste contenue dans la Map sous la clef "nom/mot de passe".

    Or une liste possède une méthode add, si je ne m'abuse, donc autant l'utiliser.

    Toutefois j'ai fait une légère erreur dans le code donnée précédemment. En effet, lors de la déclaration de la HashMap, j'ai oublié une partie de la déclaration de génériques.

    Le code qui fonctionne est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        HashMap<String, List<String>> nomEtPasse = new HashMap<String, List<String>>();
        nomEtPasse.put("nom/mot de passe", new ArrayList<String>());
        nomEtPasse.get("nom/mot de passe").add("toto/toto");
        nomEtPasse.get("nom/mot de passe").add("test/test");

  10. #10
    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
    À noter qu'il vaut peut-être mieux mettre un Set qu'une List, mais ça dépend du besoin, of course.

Discussions similaires

  1. java.util.Hashmap a partir d'une liste de String
    Par identifiant_bidon dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 30/04/2009, 17h54
  2. Parcours d'une HashMap (java)
    Par basket10 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/03/2007, 16h06
  3. intialiser un HashMap static en java 1.5
    Par eXiaNazaire dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 24/09/2006, 11h12
  4. Equivalent des Java Hashmap en Visual c++
    Par Sallie dans le forum MFC
    Réponses: 10
    Dernier message: 12/05/2006, 10h20
  5. Equivalent des Java Hashmap en c++
    Par Sallie dans le forum C++
    Réponses: 4
    Dernier message: 11/05/2006, 17h58

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