我想实现一个简单的类(在 Java 中),它允许我注册和注销字符串,并根据当前的字符串集自动完成给定的字符串。因此,界面将是:
- 无效添加(字符串)
- 无效删除(字符串)
- 字符串完成(字符串)
就算法和数据结构而言,最好的方法是什么?
我想实现一个简单的类(在 Java 中),它允许我注册和注销字符串,并根据当前的字符串集自动完成给定的字符串。因此,界面将是:
就算法和数据结构而言,最好的方法是什么?
您应该考虑使用 PATRICIA trie 作为数据结构。在谷歌上搜索“patricia trie”,你会发现很多信息......
您所追求的数据结构称为三元搜索树。
在 www.javaworld.com/javaworld/jw-02-2001/jw-0216-ternary.html 上有一个很棒的 JavaWorld 示例
它必须是某种可以按排序顺序维护的列表。您还必须编写自己的搜索算法,为您提供列表中与您的搜索模式匹配的第一个元素的索引。然后从该索引进行迭代,直到第一个不匹配的元素,并且您拥有可能的完成列表。
我会从 commons-collections 中查看TreeList 。它具有从列表中间快速插入和删除的时间,您需要这些时间来保持排序顺序。从支持该列表的树中写出您的搜索功能可能相当容易。
对于那些偶然发现这个问题的人......
我刚刚在 Google Code 上发布了一个服务器端自动完成实现。该项目包括一个可以集成到现有应用程序中的 java 库和一个独立的 HTTP AJAX 自动完成服务器。
我希望这能让人们将高效的自动完成功能整合到他们的应用程序中。踢轮胎!
我创建了一个名为 Simple AutoComplete 的 JQuery 插件,它允许您在同一页面上根据需要添加许多自动完成功能,并添加带有额外参数的过滤器,并执行回调函数以带来其他参数,例如项目的 id。
请参阅http://www.idealmind.com.br/projetos/simple-autocomplete-jquery-plugin/
常用表达。