Stocker une primitive dans un Hash

Le
SL
Bonjour,

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 ?

Bien à vous,
SL
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Black Myst
Le #197560
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
Le #198443
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

Publicité
Poster une réponse
Anonyme