快速筛选列表

时间:2008-11-20 22:00:18

标签: search list filter

每个人都熟悉此功能。如果您打开Outlook地址簿并开始键入名称,则搜索框下方的列表会立即过滤为仅包含与您的查询匹配的项目。当您浏览类型时,.NET Reflector具有类似的功能...您开始键入,无论您正在浏览的底层程序集有多大,它都接近瞬间。

我总是想知道这里的秘制酱是什么。怎么这么快?我想如果数据存在于内存中,或者需要从某些外部源(即DB,搜索某些文件等)获取数据,也会有不同的算法。

我不确定这是否相关,但如果有资源,我特别感兴趣的是如何用WinForms做这个...但如果你知道一般资源,我很感兴趣那些: - )

2 个答案:

答案 0 :(得分:2)

What is the most common use of the trie data structure?

Trie基本上是一个树结构,用于存储大量类似字符串,提供字符串的快速查找(如哈希表),并允许您按字母顺序迭代它们。

图片来自:http://en.wikipedia.org/wiki/Trie
alt text

在这种情况下,Trie存储字符串:


客栈


10个

对于您输入的任何前缀(例如,'t'或'te'),您可以轻松查找以该前缀开头的所有单词。更重要的是,查找取决于字符串的长度,而不是Trie中存储的字符串数量。阅读我引用的维基百科文章以了解更多信息。

答案 1 :(得分:1)

该过程称为全文索引/搜索。

如果您想要使用算法和数据结构,我建议您阅读Programming Collective Intelligence以获得对该字段的详细介绍,如果您只是想要我推荐的功能lucene。 / p>