如何实现简单的自动完成功能?

时间:2008-09-16 14:43:37

标签: java autocomplete

我想实现一个简单的类(在Java中),它允许我注册和注销字符串,并根据当前字符串集自动完成给定的字符串。所以,界面将是:

  • void add(String)
  • void remove(String)
  • String complete(String)

在算法和数据结构方面,最好的方法是什么?

6 个答案:

答案 0 :(得分:4)

您应该考虑使用PATRICIA trie来获取数据结构。在谷歌搜索'patricia trie',你会发现很多信息...

答案 1 :(得分:3)

您所追求的数据结构称为三元搜索树。

www.javaworld.com/javaworld/jw-02-2001/jw-0216-ternary.html上有一个很棒的JavaWorld示例

答案 2 :(得分:0)

它必须是某种类型的List,您可以按排序顺序维护它。您还必须编写自己的搜索算法,该算法将为您提供列表中与搜索模式匹配的第一个元素的索引。然后从该索引迭代直到第一个不匹配的元素,并且您有可能的完成列表。

我会从公共收藏品中查看TreeList。它具有从列表中间快速插入和删除的时间,以便维护排序顺序。从支持该列表的树中编写搜索功能可能相当容易。

答案 3 :(得分:0)

对于那些偶然发现这个问题的人......

我刚在Google Code上发布了server-side autocomplete implementation。该项目包括一个可以集成到现有应用程序中的Java库和一个独立的HTTP AJAX自动完成服务器。

我希望能够让人们将高效的自动完成功能整合到他们的应用程序中。踢轮胎!

答案 4 :(得分:0)

我创建了一个名为Simple AutoComplete的JQuery插件,它允许您在同一页面上添加许多自动完成,并添加带有额外参数的过滤器,并执行回调函数以带来其他参数,如id该项目。

http://www.idealmind.com.br/projetos/simple-autocomplete-jquery-plugin/

上查看

答案 5 :(得分:-2)

正则表达式。