シンプルなオートコンプリート機能を実装するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/73095

  •  09-06-2019
  •  | 
  •  

質問

文字列の登録と登録解除を可能にし、現在の文字列セットに基づいて特定の文字列をオートコンプリートできる単純なクラスを (Java で) 実装したいと考えています。したがって、インターフェイスは次のようになります。

  • void add(文字列)
  • 無効な削除(文字列)
  • 完全な文字列(文字列)

アルゴリズムとデータ構造の観点からこれを行う最善の方法は何でしょうか?

役に立ちましたか?

解決

データ構造には PATRICIA トライの使用を検討する必要があります。Google で「パトリシア トライ」を検索すると、たくさんの情報が見つかります。

他のヒント

あなたが求めているデータ構造は、三分探索ツリーと呼ばれます。

JavaWorld の優れた例が www.javaworld.com/javaworld/jw-02-2001/jw-0216-ternary.html にあります。

これは、ソートされた順序で維持できるある種のリストである必要があります。また、検索パターンに一致するリスト内の最初の要素のインデックスを提供する独自の検索アルゴリズムを作成する必要もあります。次に、一致しない最初の要素が見つかるまでそのインデックスを反復処理し、候補となる補完のリストを取得します。

見てみます ツリーリスト コモンズコレクションから。ソートされた順序を維持するために、リストの途中で挿入および削除する時間が高速になります。おそらく、そのリストを裏付けるツリーから検索関数を作成するのはかなり簡単でしょう。

この疑問につまずいた人のために...

ちょうど投稿しました サーバー側のオートコンプリートの実装 Googleコードで。このプロジェクトには、既存のアプリケーションに統合できる Java ライブラリとスタンドアロンの HTTP AJAX オートコンプリート サーバーが含まれています。

私の願いは、人々が効率的なオートコンプリートをアプリケーションに組み込めるようになることです。タイヤを蹴りましょう!

Simple AutoComplete と呼ばれる JQuery プラグインを作成しました。これを使用すると、同じページに必要に応じて多くのオートコンプリートを追加したり、追加のパラメーターを持つフィルターを追加したり、コールバック関数を実行してアイテムの ID などの他のパラメーターを取得したりできます。

でご覧ください http://www.idealmind.com.br/projetos/simple-autocomplete-jquery-plugin/

正規表現。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top