全部 -
问一个我最近遇到的具体问题,令人惊讶的是没有找到任何令人信服的答案。
C# Hashtable(和 Dictionary - 在内部使用 Hashtable)利用的内部支持数据结构是什么
所以本质上 - 什么样的桶是存储在其中的键值对 - ArrayList,LinkedList(我知道这不是这里的答案),树结构等。
不寻找冲突策略等 - 只需计算哈希码 - Hashtable 内部使用什么数据结构来存储该值?
任何解释或文章指针都会有帮助。
全部 -
问一个我最近遇到的具体问题,令人惊讶的是没有找到任何令人信服的答案。
C# Hashtable(和 Dictionary - 在内部使用 Hashtable)利用的内部支持数据结构是什么
所以本质上 - 什么样的桶是存储在其中的键值对 - ArrayList,LinkedList(我知道这不是这里的答案),树结构等。
不寻找冲突策略等 - 只需计算哈希码 - Hashtable 内部使用什么数据结构来存储该值?
任何解释或文章指针都会有帮助。
字典内部数据结构有一个很好的解释: https : //www.simple-talk.com/blogs/2011/09/16/the-net-dictionary/,HashTable也是如此
简而言之,哈希表由两个数组组成:桶和条目
添加项目时,会以当前数组大小为模生成哈希码,这决定了存储项目的插槽。
但是,该插槽不是条目中的那个,它实际上是存储桶中的那个。
散列索引处的桶中的值然后是实际存储数据的条目中的槽的索引,并且简单地分配给数组中的下一个空闲槽。
System.Collections.Hashtable
定义一个自定义结构(桶)用于存储键、值和冲突信息,并保留该结构实例的简单数组。
System.Collections.Generic.Dictionary
使用大致相同的策略,尽管使用泛型类型而不是object
. 泛型Dictionary
不使用非泛型Hashtable
,即使它们的工作方式相似。