CAST ERROR

CAST ERROR - Java - Programmation

Marsh Posté le 28-03-2005 à 15:49:09    

Bonjour,
 
J'utilise une HashMap dans mon code.
Quand je ve recuperer la valeur d'une des clés , ca me renvoie un object.
Ma clé est un int alors je me di pas de problemes , je vais le caster mais :
monEntier = (int) maHashMap.get(maCle);
c'est refusé :/
alors comment faire pour le caster???
(j'ai bien été voir l'api java mais bon :/ rien)
si vous avez une idée ce serait cool. merci

Reply

Marsh Posté le 28-03-2005 à 15:49:09   

Reply

Marsh Posté le 28-03-2005 à 15:59:14    

oulala !

Reply

Marsh Posté le 28-03-2005 à 16:12:16    

Si t'es en java 1.5 tu peux faire  
int machin = (Integer)hashmap.get(...);
Sinon faut le mettre dans un Integer puis
int machin = tonInteger.intValue();

Reply

Marsh Posté le 28-03-2005 à 16:13:53    

vis à vis de l'edit 2 : j'ai jamais compris ce quiproquo entre cast et transtypage. Retrouver le type réel d'un objet et faire une conversion, c'est très différent. Donc non, en C++, tu ne peux pas surcharger l'opérateur de cast.

Reply

Marsh Posté le 28-03-2005 à 16:25:40    

Merci pour les reponses.
Je vais utiliser l'objet Integer mais bon java ca me change par rapport au C :) bref  
Integer monInteger = new Integer((Integer)maHashMap.get(MaCle));
si je comprends bien ^^

Reply

Marsh Posté le 28-03-2005 à 16:30:42    

tu comprends rien, et j'imagine le carton en C ...

Reply

Marsh Posté le 28-03-2005 à 16:40:34    

maintenant la question à 100points : ça serait quoi l'intérêt de faire une copie d'un Integer si c'était possible ?

Reply

Marsh Posté le 28-03-2005 à 17:26:53    

oui pas bete , j'ai ecris ca un peu vite ^^
et aucun interet pour repondre a taz
Merci annadivx pour tes reponses completes.

Reply

Marsh Posté le 28-03-2005 à 18:51:53    

Lol je crois que je me suis mal exprimé en disant "et aucun interet pour repondre a taz" ca voulait dire qu'il n'ya aucun interet a faire une copie d'un Integer :)"
-----------------------------
Sinon une derniere petite question
quand j'utilise sur ma hashmap un keySet() qui me renvoie un Set contenant tous les cle de la hashmap, si je modifie ensuite ce Set retourne il me modifira bien ma hashmap ( en gros ces cles sont des pointeurs vers la hashmap elle meme?)

Reply

Marsh Posté le 28-03-2005 à 18:56:46    

glod 2 a écrit :

Si t'es en java 1.5 tu peux faire  
int machin = (Integer)hashmap.get(...);


en java 1.5, tant qu'à faire on fera une map générique =>
 

Code :
  1. Map<...,int> map = new HashMap<...,int>();
  2. ...
  3. int machin = map.get(...);


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

Marsh Posté le 28-03-2005 à 18:56:46   

Reply

Marsh Posté le 28-03-2005 à 19:01:33    

arf...
while (1){
   maCervelle--;
   comprendsPas++;
   fprintf(stderr,"aidez moi :)\n" );
}
 
Bon c pas grave je vais essayer d'etre plus clair et d'expliciter mon probleme.
disons que j'ai une hashmap contenant de cles et des valeurs
Si je ve faire un random sur une des cles, existe t'il un objet plus adapté que les hashmap? ou c'est possible ???

Reply

Marsh Posté le 28-03-2005 à 19:03:20    

benou a écrit :

en java 1.5, tant qu'à faire on fera une map générique =>
 

Code :
  1. Map<...,int> map = new HashMap<...,int>();
  2. ...
  3. int machin = map.get(...);



 
:non:
Faut des objets pour typer une collection, donc <..., Integer>
 
Sinon oui modifier le KeySet modifie la HashMap.


Message édité par glod 2 le 28-03-2005 à 19:04:03
Reply

Marsh Posté le 28-03-2005 à 19:04:32    

je comprend pas : tu dis que tu veux faire un random sur des clefs d'une hashmap mais tu demandes si tu dois utiliser une hashmap ?  :heink:


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

Marsh Posté le 28-03-2005 à 19:08:49    

glod 2 a écrit :

:non:
Faut des objets pour typer une collection, donc <..., Integer>
Sinon oui modifier le KeySet modifie la HashMap.


ha oui tiens ... ils ont pas géré l'autoboxing sur les generics ... bizarre ...
 
correction de l'exemple

Code :
  1. Map<String, Integer> map = new HashMap<String, Integer>();
  2. map.put("toto", 12);
  3. int val = map.get("toto" );


(compilé et testé pour éviter de raconter des conneries)


Message édité par benou le 28-03-2005 à 19:09:09

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

Marsh Posté le 28-03-2005 à 19:13:57    

En fait benou.
j'utilise une hashmap mais je pe changer si un objet se prete plus a mes attentes...
Sur cette hashmap , je voudrais faire un tirage aleatoire qui me donnerait une des cle de la hashmap. et ensuite modifié la valeur associé a cette clé. Juste ca :)

Reply

Marsh Posté le 28-03-2005 à 19:15:57    

je vois pas bien pourquoi tu tires pas directement au hasard parmis les valeurs ... c'est quoi l'intérêt de la clef dans l'histoire ? (dès que tu parles de clef et de valeur, tu parles déjà de Map ...)


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

Marsh Posté le 28-03-2005 à 19:17:51    

algo de voisinage oui :)

Reply

Marsh Posté le 28-03-2005 à 19:20:22    

en fait je m'explique
ma map contient en clé un type de cellule, et leur nombre qui existe.
Je voudrais en tuer de temps en temps aleatoirement.
Donc fo que je chope une des cellules (clé) de la map, faire une decrementation sur le nombre (valule).
et ensuite renvoyé quelle cellule a été modifié...
voila :)
 

Reply

Marsh Posté le 28-03-2005 à 19:27:39    

ok bon dodo. :)
Le probleme c'est que en plus je connais pas en avance les types de cellules surtout qu'on peut en ajouter dynamiquement.
Mais bon je vais essayer de reprendre tout depuis le debut. Je me suis trop embrouillé la en fait :)
Merci

Reply

Sujets relatifs:

Leave a Replay

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