C#Hashtable内部数据结构

Pat*_*ick 12 c# data-structures

全部 -

问我最近遇到的一个具体问题,并且令人惊讶地没有找到任何令人信服的答案.

什么是C#Hashtable(和内部使用Hashtable的Dictionary)利用的内部支持数据结构

所以本质上 - 什么样的存储桶是存储在 - ArrayList,LinkedList(我知道这里不是答案)的关键值对,树结构等.

不寻找碰撞策略等 - 只要计算一个哈希码 - Hashtable在内部使用什么数据结构来存储这个值?

任何解释或文章指针都会有所帮助.

tih*_*nua 9

字典内部数据结构有一个很好的解释:https: //www.simple-talk.com/blogs/2011/09/16/the-net-dictionary/,HashTable也是如此

简而言之,散列表由两个数组组成:存储桶和条目

添加项目时,将以当前数组大小为模生成哈希码,并确定项目存储的插槽.

但是,该插槽不是条目中的插槽,实际上是存储区中的插槽.

然后,散列索引处的桶中的值是数据实际存储在的条目中的槽的索引,并且简单地分配给阵列中的下一个空闲槽.