假设我有一个特定类的集合(可以是数组、通用列表或任何最快解决此问题的方法),我们称之为ClassFoo
:
class ClassFoo
{
public string word;
public float score;
//... etc ...
}
假设集合中将有 50.000 个项目,全部在内存中。现在我想尽可能快地获取集合中遵守其 bar 成员条件的所有实例,例如:
List<ClassFoo> result = new List<ClassFoo>();
foreach (ClassFoo cf in collection)
{
if (cf.word.StartsWith(query) || cf.word.EndsWith(query))
result.Add(cf);
}
如何尽快获得结果?我应该考虑一些高级索引技术和数据结构吗?
此问题的应用程序域是一个自动完成器,它获取查询并作为结果提供一组建议。假设条件没有比这更复杂。还假设会有很多搜索。