Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parcourir une hashmap

    26 avril 2021 à 10:55:00

    Bonjour,

     HashMap<List<String>, Repertoire> map = parse(file);

    J'ai voulu créer une HashMap possédant 3 keys, j'ai donc mis une liste avec les 3 keys en paramètre, cependant je n'arrive pas à afficher le contenu de cette liste.

     for(Entry<List<String>, Repertoire> entry : map.entrySet()) {
                List cle = entry.getKey();
                Repertoire valeur = entry.getValue();
                System.our.println(cle + " " + repertoire);
            }

    Ca ne marche pas, "Entry cannot be resolved to a type" et j'ai un soucis avec l'import de Entry.

    Merci d'avance,

    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2021 à 11:58:02

      Un souci ? Ca serait bien de nous dire lequel.

      Le résultat d'entrySet, c'est un ensemble de Map.Entry

      Set<Map.Entry<K,V>> 	entrySet()
                              Returns a Set view of the mappings contained in this map.



      Ligne 4, ça serait pas valeur, plutôt ?

      -
      Edité par michelbillaud 26 avril 2021 à 12:28:31

      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2021 à 12:01:13

        Je pense que mon raisonnement est pas bon ou est pas optimal au final.

        Je vais t'expliquer ce que je veux faire pour éviter de me lancer dans quelques choses de faux.

        J'ai deux fichiers XML avec des informations sur des contacts que je dois comparer, j'ai crée une class Contact que je rempli lors de mon Parse.

        Maintenant, je veux créer une map répertoire pour stocker tout les contacts. Je dois identifier les contacts par leur ID, nom, prénom (pour pouvoir le match entre les deux fichier XML).

        Je me suis dit que je devais créer une map du style map<List(ID, nom, prenom), Repertoire>

        Au final, j'aurais 2 map chacune correspondant à un XML, et pour comparer des contacts je les identifies avec ma List et ensuite je fais la comparaison de l'objet repertoire.

        J'espère avoir été clair.

        Mon soucis : Je n'arrive pas à afficher ma map pour voir si elle est remplie correctement.

        Merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter
          26 avril 2021 à 15:59:25

          RolloRagnar a écrit:

          Je pense que mon raisonnement est pas bon ou est pas optimal au final.

          Je me suis dit que je devais créer une map du style map<List(ID, nom, prenom), Repertoire>

          Pourquoi la map contiendrait-elle des répertoires ?

          > (pour pouvoir le match entre les deux fichier XML).

          pouvoir le match, je sais pas ce que ça peut vouloir dire.

          match

          nom masculin
          1. Compétition entre deux ou plusieurs concurrents, deux ou plusieurs équipes.
            Des matchs ou des matches (pluriel anglais).
            • Faire match nul
              terminer le match à égalité.

          Bon,

          • tu as deux fichiers (XML, peu importe) avec des données
          • tu veux en faire quoi ?
          Pour ce qui est de parcourir une map pour la faire afficher, y a au moins 4 moyens :
                 Map<String, String> map = new HashMap<>();
                  map.put("chien", "dog");
                  map.put("poisson", "fish");
          
                  System.out.println("- map.forEach(BiConsumer)");
                  map.forEach((fr, en) -> {
                      System.out.println("fr=" + fr + ", en=" + en);
                  });
          
                  System.out.println("- map.entrySet().forEach(Consumer)");
                  map.entrySet().forEach(entry -> {
                      System.out.println("fr=" + entry.getKey()
                              + ", en=" + entry.getValue());
                  });
                  
                  System.out.println("- for(var entry : map.entrySet()) { } ");
                  for(var entry : map.entrySet()) {
                      System.out.println("fr=" + entry.getKey()
                              + ", en=" + entry.getValue());
                  };
                  
                  System.out.println("- for(var key : map.keySet()) { } ");
                  for(var key : map.keySet()) {
                      System.out.println("fr=" + key
                              + ", en=" + map.get(key));
                  };

           PS : un cinquième :   map.keySet().forEach( (k) ->  ..... map.get(k) ...)

          -
          Edité par michelbillaud 26 avril 2021 à 16:27:22

          • Partager sur Facebook
          • Partager sur Twitter
            26 avril 2021 à 16:11:20

            Bonjour,

            Le type c'est Map.Entry, pas juste Entry.

            • Partager sur Facebook
            • Partager sur Twitter
              26 avril 2021 à 16:25:43

              et puis, depuis java 10 (2018), quand dans un programme on veut dire

                            "la variable toto du type qui va bien",

              on met

                             var toto = ....

              Parce que sinon, c'est "la variable toto d'un type que j'ai besoin de préciser parce que ce n'est pas celui auquel vous penseriez" (et là, il faudrait expliquer pourquoi).

              Ce fil est la parfaite illustration qu'essayer d'expliciter le type quand il n'y a pas une raison sérieuse de le faire, c'est juste une source d'emmerdements et une perte de temps, tant pour celui qui écrit que pour celui qui lit.

              -
              Edité par michelbillaud 26 avril 2021 à 16:29:27

              • Partager sur Facebook
              • Partager sur Twitter

              Parcourir une hashmap

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown