Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 词典如何快速查找_C#_Dictionary - Fatal编程技术网

C# 词典如何快速查找

C# 词典如何快速查找,c#,dictionary,C#,Dictionary,我正在查看字典的项[TKey]源代码,试图了解字典中的存储/检索机制,以及为什么它比逐个检查每个条目更快 我感到困惑的是bucket字段中素数的用户以及与条目的相互作用 有人能给我解释一下逻辑吗,或者指出一个我能理解的参考资料 谢谢。查看哈希代码,它们允许字典“存储”键: 科林·E.请看这篇维基百科文章: 字典只是哈希表的强类型实现。它有许多“桶”,用来存放带有钥匙的物品 当您向哈希表中添加一个项时,它使用键的hashcode来决定将其放入哪个bucket(这通常是一个非常快速的操作,只需调用

我正在查看
字典的
项[TKey]
源代码
,试图了解字典中的存储/检索机制,以及为什么它比逐个检查每个条目更快

我感到困惑的是
bucket
字段中素数的用户以及与
条目的相互作用

有人能给我解释一下逻辑吗,或者指出一个我能理解的参考资料


谢谢。

查看哈希代码,它们允许字典“存储”键:


科林·E.

请看这篇维基百科文章:

字典只是哈希表的强类型实现。它有许多“桶”,用来存放带有钥匙的物品

当您向哈希表中添加一个项时,它使用键的hashcode来决定将其放入哪个bucket(这通常是一个非常快速的操作,只需调用
GetHashCode
并对其应用一个模)。一旦它有了bucket(这是一种列表),它就会检查bucket是否已经包含了一个具有相同密钥的项,如果不是这样,就会添加它。这也是非常快的,因为每个bucket只包含哈希表中所有项的一小部分

当您希望根据项的键检索项时,它会根据项的哈希代码确定bucket,并在bucket中查找具有此键的项


当然,这是一个非常简单的描述。。。查看Wikipedia文章了解更多详细信息。

哈希表+单独链接暂时忽略“素数”部分(这是一些基于数论的优化),然后查看/hash table/Wikipedia页面中的图表。哇,我不知道。哈希表似乎是无数计算机科学专业的博士论文的产物,目的是找到最有效的方法。