Как реализовать простую функцию автозаполнения? - PullRequest
3 голосов
/ 16 сентября 2008

Я хотел бы реализовать простой класс (в Java), который позволил бы мне регистрировать и отменять регистрацию строк, и на основе текущего набора строк автоматически завершать заданную строку. Итак, интерфейс будет:

  • void add (String)
  • void remove (String)
  • Строка завершена (String)

Какой лучший способ сделать это с точки зрения алгоритмов и структур данных?

Ответы [ 6 ]

4 голосов
/ 16 сентября 2008

вы должны рассмотреть возможность использования дерева PATRICIA для структуры данных. Поищите в Google «Patricia Trie», и вы найдете много информации ...

3 голосов
/ 16 сентября 2008

Получаемая вами структура данных называется троичным деревом поиска.

На сайте www.javaworld.com/javaworld/jw-02-2001/jw-0216-ternary.html

есть отличный пример JavaWorld.
0 голосов
/ 22 марта 2010

Я создал плагин JQuery под названием Simple AutoComplete, который позволяет добавлять сколько угодно автозаполнения на той же странице, а также добавлять фильтры с дополнительным параметром и выполнять функцию обратного вызова для получения других параметров, таких как идентификатор элемент.

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

0 голосов
/ 22 декабря 2009

Для тех, кто наткнулся на этот вопрос ...

Я только что опубликовал реализацию автозаполнения на стороне сервера в Google Code. Проект включает в себя библиотеку Java, которая может быть интегрирована в существующие приложения, и автономный сервер автозаполнения HTTP AJAX.

Я надеюсь, что это позволит людям включить эффективное автозаполнение в свои приложения. Пинайте шины!

0 голосов
/ 16 сентября 2008

Это должен быть какой-то список, который вы можете поддерживать в отсортированном порядке. Вам также придется написать собственный алгоритм поиска, который даст вам индекс первого элемента в списке, который соответствует вашему шаблону поиска. Затем переходите от этого индекса к первому элементу, который не соответствует, и у вас будет список возможных завершений.

Я бы посмотрел на TreeList из общих коллекций. Он имеет быстрое время вставки и удаления из середины списка, которое вы хотите, чтобы поддерживать отсортированный порядок. Вероятно, было бы довольно легко написать свою функцию поиска из дерева, которое поддерживает этот список.

0 голосов
/ 16 сентября 2008

Регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...