効率的なo(1)で検索アルゴリズムを実装する必要があります。私がHashSetを使用し、User.FirstNameによる検索を試してみると、それは正しいですか?そうでない場合は、アドバイスをお願いします。どうすればこの検索を実現できますか?一般的な検索速度
一般的な検索速度
答えて
Dictionary<TKey,TValue>
を使用する必要があります。TKey
は検索タイプに基づいています。ただし、検索用語にFirstName
のようなものを使用している場合は、同じキーで複数の値があると問題が発生する可能性があります。
ILookup
を生成するには、ToLookupを使用することをお勧めします。たとえば:
IEnumerable<Person> people = GetPeople();
var nameLookup = people.ToLookup(p => p.FirstName);
それからんでした:
var peopleNamedFred = nameLookup["Fred"];
foreach(var fred in peopleNamedFred)
Console.WriteLine("{0} {1}, fred.FirstName, fred.LastName);
LookUpは不変です。それはいくつかの用途にはいいですが、他の用途では使用できません。 – CodesInChaos
@CodeInChaos:True - データが変更された場合は、 'ILookup'を再生成する必要があります。つまり、必要に応じて、 'Dictionary
はSystem.Collections.ObjectModel.KeyedCollection
の実装を作成します。
MSDN referenceによると、O(1)インデックス検索とO(1)に近づくキー検索の両方を提供します。しかし、それでも、HashTableには重複キーが許されないという制限があります。鍵の値が重複する必要がある場合や、異なる時間に異なる項目を鍵として使用する必要がある場合は、Reed Copseyが非常に優れたソリューションを提供します。
- 1. 例外検索の一般的なユーティリティ
- 2. 一般的なオブジェクト配列の検索
- 3. Sitecore:検索との一般的なリンク
- 4. 一般的な線形検索
- 5. Excel検索速度対VBAバイナリ検索?
- 6. 検証一般的なプロパティ検証アプリケーションブロック
- 7. 複数の一般的な開始文字列の検索
- 8. 弾性検索:一般的なトークンの組み合わせ
- 9. テキスト内の一般的なフレーズを検索する
- 10. 最も一般的な項目のO(n)線形検索
- 11. 一般的な言葉のためのMongoDBフルテキスト検索
- 12. 最も一般的な条件での値の検索
- 13. 一般的な方法は、春のデータを検索する
- 14. 一般的な検索方法ですか?
- 15. 検索結果からの一般的な属性
- 16. リストのデータフレームで最も一般的な検索
- 17. DateTime.Nowの検索速度
- 18. 最も一般的な粒度
- 19. 一般的なウェブカメラでのオブジェクト検出
- 20. 一般的なOpenCVラインの検出
- 21. 数値フィールドの一般的な検証
- 22. 手振れ対一般的な手振れの加速度閾値?
- 23. 一般的なWebページの読み込み速度とパフォーマンスのベストプラクティス
- 24. さまざまなテーブルを検索する一般的な方法
- 25. postgresとmysqlで一般的な大文字の検索が動作しない
- 26. 一般リストから項目を検索
- 27. 検索一般リスト<T> Idプロパティ
- 28. 一般的なドロップダウンリスト
- 29. 一般的なクエリメソッド
- 30. 一般的なスクレーパー
代わりに、おそらく 'Dictionary'が必要です。 –
@Ben:あなたがFirstNameを使っているのであれば、重複したキーを取得するので... –
@Reed:本当に、あなたは 'unordered_multimap'の行に沿って何かをしたいと思います。 。ネット。 –