我有一个
List<string>
有 1500 个字符串。我现在使用以下代码仅提取以字符串 prefixText 开头的字符串。
foreach(string a in <MYLIST>)
{
if(a.StartsWith(prefixText, true, null))
{
newlist.Add(a);
}
}
这非常快,但我正在寻找快速的 google。现在我的问题是,如果我按字母顺序排列列表,然后一个字符一个字符地进行比较,我可以使它更快吗?或者任何其他关于加快速度的建议?
最佳答案
因此 1500 并不是一个很大的数字,对排序列表进行二分查找可能就足够了。 然而,最有效的前缀搜索算法是基于名为 Trie 或 Prefix Tree 的数据结构。请参阅:http://en.wikipedia.org/wiki/Trie
下图非常简要地演示了这个想法:
对于 c# 实现,请参见实例 .NET DATA STRUCTURES FOR PREFIX STRING SEARCH AND SUBSTRING (INFIX) SEARCH TO IMPLEMENT AUTO-COMPLETION AND INTELLI-SENSE
关于c# - 在 List<string> 中搜索字符串 .StartsWith(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10472881/