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

avec Java Discussion :

Parcourir HashMap java


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    novembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : novembre 2020
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Parcourir HashMap java
    Bonjour à tous

    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
    33
    34
    35
    36
    37
    private static ArrayList<String> liste1 = new ArrayList<String>(Arrays.asList("a","b"));
        private static ArrayList<String> liste2 = new ArrayList<String>(Arrays.asList("c","d"));
        private static ArrayList<String> liste3 = new ArrayList<String>(Arrays.asList("e","f","g"));
     
        private static Map<String, ArrayList<String>> mapExtract = new HashMap<String, ArrayList<String> >();
     
        public static void remplir() {
     
            mapExtract.put("KEY1", liste1);
            mapExtract.put("KEY2", liste2);
            mapExtract.put("KEY3", liste3);
     
        }
     
        public static void main(String[] args) {
            remplir();
     
     
     
            Scanner clavier = new Scanner(System.in);
            System.out.println("Entrez une chaine");
            String key = clavier.nextLine();
     
            for(int i=0; i<mapExtract.size(); i++) {
     
                ArrayList<String> temp = mapExtract.get(i);
     
                    for(int j=0; j<temp.size();j++) {
     
                        if(key.equals(temp.get(j))) {
                            System.out.println(mapExtract.get(i));
     
                        }
                    }
     
     
            }
    Entrez une chaine
    a
    Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.ArrayList.size()" because "temp" is null
    at Test.main(Test.java:43)
    keySet retourne un string comment je suis censé l'utiliser dans ma boucle ?
    J'aimerai qu'on m'affiche KEY1

    merci d'avance

  2. #2
    Membre averti
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    décembre 2008
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2008
    Messages : 550
    Points : 406
    Points
    406
    Par défaut
    Bonjour,

    Dans un premier temps, je vais répondre à ta question. Ensuite, je t'expliquerai certains principes fondamentaux de l'utilisation des structures de données de type table de hachage.

    keySet retourne un string comment je suis censé l'utiliser dans ma boucle ?
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set<String> keySet = mapExtract.keySet();
    for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) {
        String next = iterator.next();
        System.out.println(next);
    }
    J'aimerai qu'on m'affiche KEY1
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for (Map.Entry<String, ArrayList<String>> entry : mapExtract.entrySet()) {
         if (!entry.getValue().contains(key)) {
            continue;
        }          
        System.out.println(entry.getKey());
     
    }

    Explications : Le code initial que tu nous as fourni ne pouvait pas fonctionner comme tu t'en ai rendu compte car on ne parcours pas une structure de données de type table de hachage sans avoir crée soit un Iterator, une entrée sans doublons donc un EntrySet à l'aide d'une boucle for classique, ou avancée ou un while.

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int i=0; i<mapExtract.size(); i++) {
        ...
    }
    Cette structure de boucle avec un index, parcours la longueur de la hashMap mais en aucun cas les clés de la hashMap et encore moins les valeurs !!!

    Par ailleurs, il est pertinent de se plonger dans les bibliothèques de l'API Map et des méthodes contenues afin de comprendre leurs utilisations.
    https://docs.oracle.com/javase/8/docs/api/

    P.S : Si ton problème est résolu merci de le mettre en résolu. Merci par avance.
    Transact.

Discussions similaires

  1. soucis avec axis2 et Hashmap java
    Par Nandou56 dans le forum Services Web
    Réponses: 0
    Dernier message: 20/05/2010, 15h59
  2. Bouton Parcourir en java
    Par FstDsi dans le forum JDeveloper
    Réponses: 5
    Dernier message: 12/05/2008, 01h25
  3. bouton parcourir sous java
    Par z_meryem dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 20/04/2008, 01h52
  4. Bouton Parcourir en Java
    Par sticks dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 03/05/2007, 13h47
  5. Parcours d'une HashMap (java)
    Par basket10 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/03/2007, 16h06

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