我想知道.NET是否提供了通过列表或字典对象进行前缀搜索的任何标准功能。我遇到StringDictionary
,但无法弄清楚它是否可以为我做到这一点。使用.NET StringDictionary通过列表/字典进行前缀搜索?
如果它可以做一个前缀搜索,它也可以做子字符串搜索或让我使用像正则表达式一样搜索吗?
在此先感谢。
我想知道.NET是否提供了通过列表或字典对象进行前缀搜索的任何标准功能。我遇到StringDictionary
,但无法弄清楚它是否可以为我做到这一点。使用.NET StringDictionary通过列表/字典进行前缀搜索?
如果它可以做一个前缀搜索,它也可以做子字符串搜索或让我使用像正则表达式一样搜索吗?
在此先感谢。
StringDictionary
仅仅是一个哈希表,其中的键和值是string
s。这在仿制药之前就存在了(所以Dictionary<string, string>
是不可能的)。
您需要的数据结构是trie。上有CodeProject实现:
或者,如果你是那种家伙,滚你自己(见CLRS)。
我不相信StringDictionary支持前缀搜索,但是如果您使用的是SortedList<,>
,则可以对键的范围进行二进制搜索,直到找到前缀之前和之后的第一个条目。
我认为StringDictionary
是旧学校(前仿制药)。您应该使用Dictionary(Of String, String)
,因为它实现了IEnumerable(认为LINQ)。一个极端的lame thing about StringDictionary是它不区分大小写。
+1很好的回答!我不记得它的确切名称 - 特里! – 2009-12-14 17:06:03