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 :

Prendre une clé spécifique d'une valeur d'une HashMap


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut Prendre une clé spécifique d'une valeur d'une HashMap
    Bonjour à tous ,

    je sais qu'il est possible de séléctionner la valeur que l'on souhaite correspondant à la clé désigné dans une HashMap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Map<Integer, String> hm = new HashMap<>();
     hm.put(1, "A");
     hm.put(2, "B");
     System.out.println("Valeur pour la clé 2  : " + hm.get(2));
    Ceci me retourne "Valeur pour la clé 2 : B

    J'aimerais faire l'inverse ? je vais la clé correspondante pour chaque valeur B est-ce possible ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    la HashMap n'indexe pas les valeurs, donc il faut la parcourir entièrement:

    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    map.entrySet().stream()
          .filter((e)->"B".equals(e.getValue()))
          .forEach((e)-> System.out.println("Trouvé clé "+e.getKey()));

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Merci, Alors dans mon cas ça ne marche pas car mon HashMap est de type <ArrayList,Integer>
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Map<ArrayList,Integer> map1 = new HashMap<>();
    map1.put(list1, cpt1);
     
    map1.entrySet().stream()
               .filter((e)->cpt1.equals(e.getValue()))
               .forEach((e)-> System.out.println("Trouvé clé "+e.getKey()));
    La ligne 5 me dit "int cannot be dereferenced"

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    cpt1 doit être un Integer, pas un int.

    Au passage, c'est une très mauvaise idée de mettre un ArrayList comme clé, les clés d'une hashmap doivent être immutables.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Merci.

    J'ai finalement choisi de faire un tableau à 2 lignes n colonnes.
    J'associe une liste à un chiffre list1 = 1;
    et dans mon tableau 1ere ligne je mets ces chiffres comme un "id"
    et ligne 2 mon résultat.

    merci de m'avoir auguillé j'aurais cherché longtemps avec une hasmap

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/06/2016, 21h38
  2. Réponses: 5
    Dernier message: 31/05/2015, 20h57
  3. Réponses: 3
    Dernier message: 29/03/2011, 20h38
  4. Réponses: 6
    Dernier message: 29/11/2007, 16h15
  5. Réponses: 13
    Dernier message: 26/06/2006, 12h10

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