文字列を登録および登録解除し、現在の文字列セットに基づいて特定の文字列をオートコンプリートできる単純なクラスを (Java で) 実装したいと思います。したがって、インターフェースは次のようになります。
- void add(文字列)
- ボイド削除(文字列)
- 文字列完了(文字列)
アルゴリズムとデータ構造に関してこれを行う最善の方法は何ですか?
文字列を登録および登録解除し、現在の文字列セットに基づいて特定の文字列をオートコンプリートできる単純なクラスを (Java で) 実装したいと思います。したがって、インターフェースは次のようになります。
アルゴリズムとデータ構造に関してこれを行う最善の方法は何ですか?
データ構造に PATRICIA トライを使用することを検討する必要があります。グーグルで「パトリシア トライ」と検索すると、たくさんの情報が見つかります...
あなたが求めているデータ構造は、三分探索木と呼ばれます。
www.javaworld.com/javaworld/jw-02-2001/jw-0216-ternary.html にすばらしい JavaWorld の例があります。
Simple AutoComplete と呼ばれる JQuery プラグインを作成しました。これにより、同じページに必要に応じて多くのオートコンプリートを追加したり、追加のパラメーターでフィルターを追加したり、コールバック関数を実行してアイテムの id などの他のパラメーターを取得したりできます。
http://www.idealmind.com.br/projetos/simple-autocomplete-jquery-plugin/で参照してください。
ソートされた順序で維持できるある種のリストでなければなりません。また、検索パターンに一致するリスト内の最初の要素のインデックスを提供する独自の検索アルゴリズムを作成する必要があります。次に、一致しない最初の要素までそのインデックスから反復すると、可能な補完のリストが得られます。
commons-collections のTreeListを見てみます。ソートされた順序を維持するために必要な、リストの途中からの挿入と削除の時間が高速です。そのリストを支えるツリーから検索関数を作成するのはおそらくかなり簡単でしょう。
この質問につまずいた人のために...
サーバー側のオートコンプリートの実装を Google Codeに投稿しました。このプロジェクトには、既存のアプリケーションに統合できる Java ライブラリと、スタンドアロンの HTTP AJAX オートコンプリート サーバーが含まれています。
私の望みは、人々が効率的なオートコンプリートをアプリケーションに組み込むことができるようになることです。タイヤを蹴る!
正規表現。