Pour stocker un int comme "valeur" dans un couple clef/valeur d'un hash,
je convertis le plus souvent le int en Integer (ou le double en Double,
etc.), de façon à faire :
hash.put(key, new Integer(value));
évidemment la récupération du int est couteux, (il faut passer par
intValue()).
Integer valueInteger = (Integer) hash.get(key);
int value = valueInteger.intValue();
Je lis dans du code une autre manière de faire, en utilisant un tableau :
int[] valueArray = new int[1];
valueArray[0] = value;
hash.put(key, value);
et pour récupérer le int d'origine :
int valueArray = (int[]) hash.get(key);
int value = valueArray[0];
Là aussi il faut une manip, après avoir appeler get, pour récupérer la
valeur voulue : demander l'indice zéro. Quelle est la plus orthodoxe et la
plus efficace entre ces deux façon de faire -- à moins qu'il y en ait une
autre ?
Je n'avais jamais vus la technique du tableau... mais c'est tellement moche que prefère l'oublier imédiatement.
Pour moi, la seule bonne façon de faire et la première (utiliser un Integer).
Si tu as la possibilité d'utiliser le JDK 5.0, alors l'utilisation de Integer sera transparente.
SL
Si tu as la possibilité d'utiliser le JDK 5.0, alors l'utilisation de Integer sera transparente.
Ok (mais d'après ce que j'ai compris, l'autoboxing rend la conversion automatique, mais il y a bien toujours une conversion (couteuse) de int en Integer puis de Integer en int.)
slv
Si tu as la possibilité d'utiliser le JDK 5.0, alors l'utilisation de
Integer sera transparente.
Ok (mais d'après ce que j'ai compris, l'autoboxing rend la conversion
automatique, mais il y a bien toujours une conversion (couteuse) de int en
Integer puis de Integer en int.)
Si tu as la possibilité d'utiliser le JDK 5.0, alors l'utilisation de Integer sera transparente.
Ok (mais d'après ce que j'ai compris, l'autoboxing rend la conversion automatique, mais il y a bien toujours une conversion (couteuse) de int en Integer puis de Integer en int.)