Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Stocker une primitive dans un Hash

2 réponses
Avatar
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

2 réponses

Avatar
Black Myst
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.
Avatar
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