Partage
  • Partager sur Facebook
  • Partager sur Twitter

[java] valeur non gardée dans hashmap si clé changée

    18 janvier 2007 à 16:47:16

    Bonjour,

    Je sais que vu le titre cela n'est pas très explicite, je vais essayer de vous détailler mon problème.
    Tout cela correspond à un programme qui doit donner le plus court chemin entre deux sommets d'un graphe valué .

    Ma structure est ceci :
    private HashMap<Sommet,TreeSet<Arc>> graphe;

    J'ai donc une classe Sommet qui contient :
    private String nom;
            private int plusCourt; // valuation associé au sommet

    Et une classe Arc :
    private Sommet arrivee;
            private int poids;

    J'ai crée tous les sommets et tous les arcs. J'ai entré dans la hashmap pour chaque sommet les arcs associés.
    Tout cela fonctionne à merveille !

    Maintenant je souhaite modifier l'attribut plusCourt pour tous les sommets contenus dans le hashmap.

    for(Sommet s: graphe.keySet()){
                                                   
                            if(s.getNom()==depart)
                            {
                                    sommetDepart = s;
                                    s.setPlusCourt(0);
                                   
                            }
                            else
                            {
                                    s.setPlusCourt(3000);   
                            }
                    }


    Et en fait après avoir executé ce code, lorsque je parcours toutes les clés pour afficher la valeur, je n'ai que des null ?!?
    En effet j'ai mis ce code avant et après le traitement et cela m'affiche une liste de null après :

    TreeSet<Arc> tmp;
                    for(Sommet s:  graphe.keySet()){
                                           
                                           
                            tmp =graphe.get(s);     
                                            System.out.println(tmp);
                    }


    Logiquement si je modifie une clé elle devrait garder sa valeur associé dans le hashmap ?

    Merci de m'éclairer la dessus.

    Louis
    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2007 à 23:11:50

      Je ne pense pas que tu garde la valeur associé justement.

      Essaie la même chose en supprimant la paire <ancienne clé, valeur> et en faisant un graphe.put(nouvelle clé, valeur).

      Ca devrait marcher.
      • Partager sur Facebook
      • Partager sur Twitter

      [java] valeur non gardée dans hashmap si clé changée

      × 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