Partage
  • Partager sur Facebook
  • Partager sur Twitter

Incomprehension hashMap

    13 octobre 2011 à 15:49:19

    Bonjour,
    voila j'ai beau essaye de manipuler les hashMap mais je ne comprend vraiment pas.

    J'ai dans une variable ceci:
    ([run0000,corner : nom,temperature : -10],[run0001,corner : nom,temperature : -8],[run0002,corner : nom,temperature : -6])


    Voila j'aimerais obtenir un hashMap qui aurait pour cle les runXXXX et pour valeur corner et temperature ( et leur valeur).

    Si vous pouviez m'aider je desespere la :(

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2011 à 16:25:32

      Salut Liiinz,
      Tu as deux solutions, soit tu utilises une HashMap qui associe "runXXXX" à un couple de valeur "corner, température".

      Soit tu crées une classe qui contient un attribut "corner" et un attribut "temperature", et tu utilises une HashMap qui associe "runXXXX" à un objet de ta classe.

      Pour la première solution, un exemple :
      // On crée une Map qui associe un String ("runXXXX") à un couple de données ("corner, temperature")
              Map<String, Entry<String, Integer>> map = new HashMap<String, Entry<String, Integer>>();
              
              // ....
              // Ici tu parses (Regex, ...) ta variable et tu remplis la Map
              // ....
              map.put("run0000", new SimpleEntry("nom", -10));
              map.put("run0001", new SimpleEntry("nom", -8));
              
              // Affichage de la map... 
              for (Entry<String, Entry<String, Integer>> print : map.entrySet()) {
                  System.out.println("([" + print.getKey() + ", corner : " + print.getValue().getKey() + ",temperature : " + print.getValue().getValue() + "]");
              }
      


      Bonne journée,
      BloodyDark.
      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2011 à 16:48:37

        hey merci beaucoup tu m'apprends pas mal de chose et je comprend de mieux en mieux.
        Le probleme c'est que "corner" et "temperature" sont la a titre d'exemple car ceux sont des parametres qui bougent tout le temps.
        Alors j'envoie pas mal de regexp pour implementer tout ca meme si je galere un peu ca commence a prendre forme.
        Merci a toi, tu m'a montre un bon nombre d'erreur que je commettais.

        Pourrais-je te demander si je continue a avoir des problemes?
        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          14 octobre 2011 à 16:55:18

          J'en profite pour faire un petit up et dire que j'ai avance mais qu'il me reste un petit probleme.

          Du coup j'utilise un linkedHashMap() ce qui est bien plus pratique pour moi.
          Mais au moment de l'implementer voila ce que je fais:

          Map<String, String> linked = new LinkedHashMap<String, String>();
                          String token = new String();
                          // je vous evite ce passage qui initialise juste le token;
          
                          token = token.substring(token.indexOf("(") + 1, token.indexOf(", )"));
                          String[] toktok = token.split(" , ");
          
                          if (!toktok[0].equals(null)) {
          
                              for (int z = 0; z < toktok.length; z += 2) {
                                  String key = toktok[z];
                                  String val = toktok[z + 1];
                                  linked.put(key, val);
                              }
                          }
          


          voila mon token possede sur les indices paires les cles et sur les indices impaires les valeurs.
          C'est pourquoi je split et que je boucle sur z+=2.

          Le probleme que j'ai maitenant c'est que lorsque je fais linked.put(key,val); alors dans mon linkedHashMap seule la derniere cle et la dernie valeur sont inserees dedans.

          Voila je ne comprend pas pourquoi. Si quelqu'un pouvait m'aider! Merci d'avance
          • Partager sur Facebook
          • Partager sur Twitter
            17 octobre 2011 à 11:12:28

            As-tu vérifié la bonne exécution de ta boucle (combien de tour de boucles ont lieu) ?
            • Partager sur Facebook
            • Partager sur Twitter
              17 octobre 2011 à 11:45:11

              Je viens de verifier ce point et la boucle s'execute parfaitement.
              De plus j'ai repris ce bout de code ( cette boucle) sur un programme que mon maitre de stage a fait et qui tourne parfaitement... D'ou mon incomprehension la plus totale..

              Edit: Je viens de trouver mon erreur; mes cles ont toutes le meme nom. Mais le probleme c'est que ce linkedHashMap est element d'un hashMap :

              Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
              


              alors comment faire pour garder ce meme nom de cles? implementer mon hashMap au meme moment que j'implemente mon linkedHashMap?
              • Partager sur Facebook
              • Partager sur Twitter

              Incomprehension 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