3

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

  • 无效添加(字符串)
  • 无效删除(字符串)
  • 字符串完成(字符串)

就算法和数据结构而言,最好的方法是什么?

4

6 回答 6

4

您应该考虑使用 PATRICIA trie 作为数据结构。在谷歌上搜索“patricia trie”,你会发现很多信息......

于 2008-09-16T15:31:32.403 回答
3

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

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

于 2008-09-16T15:06:56.690 回答
0

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

我会从 commons-collections 中查看TreeList 。它具有从列表中间快速插入和删除的时间,您需要这些时间来保持排序顺序。从支持该列表的树中写出您的搜索功能可能相当容易。

于 2008-09-16T15:05:35.163 回答
0

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

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

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

于 2009-12-22T07:14:28.677 回答
0

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

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

于 2010-03-22T16:19:18.230 回答
-2

常用表达。

于 2008-09-16T14:49:56.293 回答