3

我对 C hsarp Dictionary 有一个非常具体的问题。假设您在字典中有 100000 条数据

var dictionary = new Dictionary<string, int>();

而且您已经使用...填写了字典

 dictionary.Add("car", 1);
 dictionary.Add("apple", 2);
...
...

现在假设您正在字典中搜索特定字符串

if (dictionary.ContainsKey("apple"))
  {
     // then do this
  }

我的问题是,字典如何从这么多键中搜索这个特定的值?它是否通过线性搜索。但 msdn 声称字典搜索复杂度接近 O(1) LinkMSDN

我对 Dictionary 的了解是它没有任何内部搜索/排序算法。 关联

谁能解释一下字典如何将其值存储在内存中以及从系统的角度检索值是如何发生的。我知道作为一名高级程序员,我们不需要考虑 .Net 的所有这些特性,但很高兴知道。其实我很想知道。MSDN 说它使用哈希表,但没有解释。

4

1 回答 1

2

从您问题中的同一链接中,您可以看到:

使用它的键检索一个值非常快,接近 O(1),因为 Dictionary 类被实现为一个哈希表

我相信您需要阅读有关哈希表的信息。

可能一个很好的起点是: 哈希表 - 数据结构

于 2012-08-30T12:20:15.400 回答