C#中的哈希表是怎样实现的

卸腰,不会。不过你的两个问题还是可以回答的。Dictionary那个接口不可能用普通链表高效实现。数据结构按照需要动态增长是很普遍的做法。
■网友
1.C#标准库中的Dictionary内部是哈希表实现C#标准库中的List是一个动态长度的数组 其他库中一般叫Vector2.你说的是Bucket的大小么?看了一下具体实现Bucket大小就是大于capacity的最小质数所以capacity参数就能间接控制Bucket的大小
■网友
C#中的哈希表是怎样实现的
【C#中的哈希表是怎样实现的】
我回答下好了:1、不是普通链表,而是一个数组,数组的值指向相应的对象。2、是需要预先开一块内存,不过是给数组用的。默认大小是3,超过了就增加到7,再到了就继续增加,一直增加到预设的Max。具体你可以去看看List或者Dictionary里的源码啊,比在这里问靠谱多了!
■网友
Dictionary是hash实现的,这个可以看代码哈。哈希表并不一定要指定初始化大小啊,因为可以在不够的时候进行Resize操作啊。实际上在大多数时候程序员都是拿不准到底需要开多大的哈希表的。比如说上一个人的好友列表,如果用哈希表的话,应该开多大呢,如果开10的话,可能有的大V好友成千上万,找一次的代价就得上千了。如果哈希表开几百几千的话,很多用户好友又达不到这个数字,空占内存。所以交给语言本身管理,当冲突多了以后自动扩容在大多数情况下都是不错的。默认的空间多大可以看默认构造函数就可以知道了,比较赞的一个数值。当然在某些情况下清楚实际的数据规模,又想节省Resize的开销,也可以调用对应的构造函数实现(如 这个)。比如一个程序每次运行需要载入一个有几G大小的词典到内存里方便后续处理,那么在合理选择并测试最优的capacity后,也可以显示地进行初始化。
■网友
Dictionary是哈希表参见Reference Source,list也不是链表。具体去reference source看看就知道了
■网友
我问的咋没人回答。。


    推荐阅读