Si l'adressage est ouvert, comment la séquence de la sonde est-elle générée? pls donne des liensLe type Hashtable en C# est implémenté en utilisant le chaînage ou l'adressage ouvert?
4
A
Répondre
4
Il utilise l'adressage ouvert (ou comme nous disions, "hachage fermé") avec double hachage pour générer la séquence d'adresse de la sonde. GetHashCode() détermine le premier index de sonde; l'intervalle est aussi une fonction de GHC().
Vous pouvez voir cela par vous-même, si vous entrez dans le code source de System.Collections.Hashtable.Add(), par exemple. [http://referencesource.microsoft.com/].
Joyeux hacking!
1
Hashtable dans le framework .net utilise la technique d'adressage ouvert ou de double hachage pendant que le dictionnaire utilise le chaînage comme technique d'évitement de collision.
Hashtable ou Dictionnaire? – SLaks
Je voudrais mettre de l'argent dessus en utilisant le chaînage. L'adressage ouvert effectif nécessite généralement deux fonctions de hachage, tandis que les objets du CLR ne peuvent garantir que l'un d'entre eux (GetHashCode()). De plus, supprimer à partir d'une table de hachage en utilisant l'adressage ouvert est une douleur. Il y a des systèmes connexes, mais l'enchaînement n'est pas vraiment un problème dans la pratique (certainement pas selon les critères que j'ai utilisés il y a quelques années). – Rafe