Hash un double en Java
Je me demandais comment le hachage d'un lit double en Java? J'ai haché les autres primitives de données et des objets. Je pensais que je pouvais utiliser la méthode hashcode? De ce que j'ai vu cela semble assez complexe. Je suis tombé sur quelque chose au sujet de la création d'une graine.
J'en étais à me demander des idées sur la façon d'aller à ce sujet. Espérant mettre avec le reste de mon hashcode de la classe qui a le double?
Je me demandais si il y a des problèmes avec moi en essayant de hachage arraylists, des tableaux et d'autres objets en java. Certains de mes classes contiennent arraylists.
Merci Beaucoup
source d'informationauteur daveb
Vous devez vous connecter pour publier un commentaire.
Double.hashCode()
complexe? Essentiellement, il convertitdouble
dans unlong
(pas de magie ici, après tout ils sont tout simplement les valeurs de 64 bits dans la mémoire) et de l'informatiquelong
de hachage est assez simple. Ledouble
->long
conversion est effectuée viapublic static doubleToLongBits()
. Ce qui est complexe à ce sujet?Exemples:
En fonction de ce que vous avez besoin de cela, vous pourriez aller avec une approche très simple de juste mod(ing).
Si c'est juste pour stocker quelques doubles dans une table de hachage, cela devrait le faire.
Si vous souhaitez diffuser le hachage, il suffit d'augmenter le "71"
La façon dont Java n'est de convertir le raw peu un double dans un long.
Remarque: Il y a beaucoup de valeurs de NaN (et deux types), mais Java traite comme tous les mêmes.
Ce a travaillé pour moi