Suppression dans un HashMap

Suppression dans un HashMap - Java - Programmation

Marsh Posté le 12-03-2005 à 15:20:25    

Bonjour voila je voudrais supprimer un objet dans un HashMap mais je n'arrive pas à le recuperer.
 
Le sujet consiste a simuler une station de ski sous forme de graphe.
 
En fait je créé l'objet stocké a partir d'un autre objet
 

Code :
  1. public Remontee inverse(){
  2.     return new Remontee(nom+" retour",arrivee,depart,open,type);
  3. }


 
 
puis lorsque que j'ajoute un objet de REmontee dans mon HashMap cela donne le code suivant:
 

Code :
  1. private void addRemontee(Remontee a) {
  2.         Vector tmp;
  3.         Remontee r = a.inverse();
  4.         tmp = (Vector) station.get(a.getDepart());
  5.         tmp.addElement(a);
  6.         station.put(a.getDepart(), tmp);
  7.         tmp = (Vector) station.get(r.getDepart());
  8.         tmp.addElement(r);
  9.         station.put(r.getDepart(), tmp);
  10.     }


 
 
Jusqu'ici tout vas bien mes 2 objets seront ajoutés le probleme arrive lors de la suppression
 

Code :
  1. public void remArc(Arc a) {
  2.         Point tmp = a.getDepart();
  3.         Vector liste = (Vector) station.get(tmp);
  4.         liste.remove(a);
  5.         station.put(tmp, liste);
  6.         if (a instanceof Remontee) {
  7.             System.out.println("Je suis un remontee" );
  8.             tmp = a.getArrivee();
  9.             Remontee r = ((Remontee) a).inverse();
  10.             //System.out.println("Element a supprimer: "+r.toString());
  11.             liste = (Vector) station.get(tmp);
  12.             System.out.println("indice " + liste.indexOf(r));
  13.             liste.remove(r);
  14.             //System.out.println(liste.toString());
  15.             station.put(tmp, liste);
  16.         }


 
Lors de la recherche par indice il me renvoie -1 dc pas trouvé pourtant les caracteristique des 2 objets sont identiques....
 
Si quelqu'1 pouvait m'aider :)
 
Merci d'avance

Reply

Marsh Posté le 12-03-2005 à 15:20:25   

Reply

Marsh Posté le 12-03-2005 à 16:45:07    

t'as pas implementé equals() et hashcode() sur ton objet Remontee


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-03-2005 à 17:54:30    

petite précision, les put() que tu fais pour remettre le vector que tu as modifié dans la map sont inutiles : le Vector est déjà dans la Map : en faisant get tu ne l'enlèves pas, tu récupère juste une référence sur le Vector => si tu modifies le Vector, il se retrouve aussi modifié dans la Map (puisque c'est le même objet). Pas besoin de le remettre dans la map.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 12-03-2005 à 20:11:56    

Bien pour les put() j'avais oublié cette notion de reference :x
 
Sinon pour mon probleme je vais implementer une methode .equals()
pour ce qui est de hashcode() je vois pas trop ce que ca fait, en plus comme j'utilise le hashmap plus pour la map que pour le hash :)

Reply

Marsh Posté le 12-03-2005 à 20:26:40    

euh.... [:moule_bite]
 
 
si t'implementes pas les deux, ça marchera pas, de toutes façons.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-03-2005 à 23:36:07    

dès que tu mets un objet en tant que clef d'une HashMap tu DOIS implémenter hashCode, c'est obligatoire.
 
si tu veux éclaircir un peu les choses, voilà un (vieux) post où j'explique en gros à quoi ca sert :
http://forum.hardware.fr/forum2.ph [...] 486&cat=10


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-03-2005 à 12:21:01    

TRes interessant le post je met ca en place et je vous dis quoi :)
 
thx

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed