3

Chsarp 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

質問の同じリンクから、次のことがわかります。

Dictionary クラスはhash tableとして実装されているため、キーを使用して値を取得するのは非常に高速で、O(1) に近くなります。

ハッシュテーブルについて読む必要があると思います。

おそらく良い出発点は次のとおりです。 ハッシュテーブル - データ構造

于 2012-08-30T12:20:15.400 に答える