c# - 在 List<string> 中搜索字符串 .StartsWith()

标签 c# string performance list

我有一个

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

下图非常简要地演示了这个想法: enter image description here

对于 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/

相关文章:

c# - 从 C# 调用 C++ 时如何最好地处理未使用的指针?

java - 线性搜索数组和字符串

c# - 生成随机 boolean 值的最快方法

c# - switch 语句中的奇变量范围

c# - 重置由 SetRenderTarget() 等函数引起的 XNA 属性更改

c# - 不调试时的 Log4Net 消息构造成本

string - 在 Groovy 中调用 split 之前如何处理单元素数组字符串?

regex - Scala 正则表达式命名捕获组

java - 提高java中Eratosthenes代码筛的效率

c# - MemberwiseClone 相当于现有对象?