7
votes

Comment puis-je obtenir une métrique sur le nombre de collisions sur un hachage Java?

Je suis en train de mettre en œuvre une fonction de hachage personnalisée, si je reçois un certain nombre de collisions dans un godet HASHMAP, comment puis-je savoir combien d'éléments sont stockés dans le seau?


1 commentaires

Pas exactement un duplicata mais un post similaire Stackoverflow.com/questions/3455457/ ...


3 Réponses :


2
votes

Il n'y a pas de moyen intégré pour déterminer si une collision s'est produite. Vous devrez étudier la manière dont la collection (HASHMAP) distribue des valeurs de code HASHCODE aux godets et refléter le processus vous-même, surveiller vos inserts pour garder une trace des collisions.


1 commentaires

On peut contourner les restrictions d'accès à l'aide de la réflexion. Voir ma réponse.



0
votes

Vous pouvez écrire du code réfléchissant pour accéder aux godets internes du hashmap et les inspecter vous-même.


0 commentaires

11
votes

Il n'y a pas de support direct à cela dans l'API. La variable de membre table , utilisée pour stocker les godets, n'est même pas publique, donc prolonger la classe ne vous mènera pas loin.

supposer que vous évaluez les fonctions de hachage et ne le faisant pas en production Code, vous pouvez avoir adopté ces contraintes à l'aide de la réflexion.

J'ai réussi à imprimer le contenu des godets. Pour analyser, les métriques de distribution ne devraient pas être difficiles de ce point. Voici le code:

Pilote de test: xxx

SUBLASHMAP: < Pré> xxx

sortie: xxx


0 commentaires