.NET字典,令人印象深刻,但它如何工作?

好的,我会承认我没有挖出反射镜,看看这里发生了什么,但我希望有人能告诉我.

微软如何快速添加和提取,我可以通过将项目粘贴到数组中来快速添加,我可以通过对数组进行排序并使用二进制搜索来快速获取.然而,如果我每次添加一个项目来进行快速排序,以便快速获取数据,添加会大大减慢,如果我每次尝试获取数据时都必须对数据进行排序,则添加项目会大大减慢.

有谁知道字典的内部工作?这是一个比阵列更多的内存饥饿,所以有一些明确的东西,而不是巧妙的算法在幕后.

我试图理解魔法并从中学习!

字典< T,T>在.Net是一个称为哈希表的数据结构:

哈希表和.Net字典:

http://en.wikipedia.org/wiki/Hash_table

http://msdn.microsoft.com/en-us/library/4yh14awz.aspx

http://www.cs.auckland.ac.nz/~jmor159/PLDS210/hash_tables.html

二进制搜索:

http://en.wikipedia.org/wiki/Binary_search

你是对的,它使用比数组更多的内存来检索数据.这是你为了更快的访问而付出的代价. (在大多数情况下,当您开始考虑构建散列表与阵列的设置时间时,这是正确的,有时排序的数组可能会更快的设置时间和访问速度.一般来说,这是一个有效的假设.

翻译自:https://stackoverflow.com/questions/5379871/net-dictionary-impressively-fast-but-how-does-it-work

转载注明原文:.NET字典,令人印象深刻,但它如何工作?