1

Java とそのデータ構造に慣れた C# 初心者です。最近、C# を書いたときに、ユーザーの選択に基づいて結果のリストを取得しようとしました。私は C# で HashTable を使用しましたが、List で where() メソッドを呼び出すことができると人々は言います。

where()関数とHashTableの実際のコストを把握できるように、whereメソッド(配列?または他のデータ構造?)のアンダーレイを疑問に思っています。

また、ほとんどの HashTable は配列または BST に基づいて作成されていることを知っていますが、HashTable は C# でどのように機能しますか?

4

1 に答える 1

3

通常、私はHashtableC# では使用しませんが、代わりに を使用Dictionary<TKey, TValue>します。これはタイプ セーフを提供するためです。

どちらのクラスも、コレクション内のアイテムにアクセスするための O(1) に近いアクセス権を持っています。これはドキュメントに記載されています:

このプロパティの値を取得または設定すると、O(1) 操作に近づきます。

List<T>aを使用すると、配列が内部的に効果的に使用されることに注意してください。つまり.Where、 O(n) filterになります。単一の要素を見つける場合FirstOrDefaultは、通常、より適切な選択です。コレクションに多くのアイテムがない場合は、これで問題ないことが多いですが、高速アクセスが必要な場合Dictionary<T,U>は、a の方が適しています。

于 2013-08-30T18:52:35.523 に答える