代码之家  ›  专栏  ›  技术社区  ›  Kaarel

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

  •  3
  • Kaarel  · 技术社区  · 16 年前

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

    • void add(字符串)
    • void remove(字符串)
    • 字符串完成(字符串)

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

    6 回复  |  直到 15 年前
        1
  •  4
  •   pgras    16 年前

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

        2
  •  3
  •   Aidos    16 年前

    后面的数据结构称为三元搜索树。

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

        3
  •  0
  •   johnmcase    16 年前

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

    我会看着 TreeList 来自公共集合。它有快速插入和删除时间,从中间的列表,你将要保持排序顺序。从支持该列表的树中编写搜索函数可能相当容易。

        4
  •  0
  •   community wiki Shilad Sen    15 年前

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

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

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

        5
  •  0
  •   Wellington RIbeiro    15 年前

    我创建了一个jquery插件,名为simple autocomplete,它允许您在同一个页面上添加多个autocomplete,并添加带有额外参数的过滤器,并执行回调函数以引入其他参数,如项的ID。

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

        6
  •  -2
  •   Jon Homan    16 年前

    正则表达式。