特定のクラスのコレクション (配列、一般的なリスト、またはこの問題に対する最速ClassFoo
の解決策であるもの) があるとします。それを呼び出しましょう。
class ClassFoo
{
public string word;
public float score;
//... etc ...
}
コレクションに 50.000 アイテムがあり、すべてメモリ内にあるとします。ここで、バー メンバーの条件に従うコレクション内のすべてのインスタンスをできるだけ早く取得したいと考えています。たとえば、次のようになります。
List<ClassFoo> result = new List<ClassFoo>();
foreach (ClassFoo cf in collection)
{
if (cf.word.StartsWith(query) || cf.word.EndsWith(query))
result.Add(cf);
}
できるだけ早く結果を得るにはどうすればよいですか? 高度なインデックス作成手法とデータ構造を検討する必要がありますか?
この問題のアプリケーション ドメインは、クエリを取得し、結果として提案のコレクションを提供するオートコンプリートです。条件がこれ以上複雑になることはないと仮定します。また、多くの検索があると仮定します。