接頭辞Trieデータ構造体のjava実装。
はじめに
試行は、順序O(k)
の高速検索を提供する順序付きツリーベースのデータ構造のようなマップです。k
はキーの長さです。 Trieについての詳細はこちらをご覧ください。
動機
これは最初に私のAndroidアプリで使用するために構築されました,t9App Launcherインストールされているアプリケーションのリストを迅速に検索して起動
パブリックApi
現在、選択できる3つのパブリック実装があります。
-
MapTrie
:HashMap
trieの実装を支援しました。 -
SortedTrie
:TreeMap
提案と値を返すbacked trie実装は昇順のソート順です。 -
T9Trie
: T9シーケンスの候補を格納および取得するためのヘルパー実装。
使用例
単純なトライを作成し、提案を取得します。
final MapTrie<String> trie = new MapTrie<>();trie.insert("Hello", "Hello");trie.insert("Help", "Help");trie.insert("Has", "Has");trie.insert("Have", "Have");trie.insert("Had", "Had");trie.insert("Hadn't", "Hadn't"); // Print to stdouttrie.print();
上記のprint()
呼び出しは、このようなツリー構造を出力します。
└── h ├── e │ └── l │ ├── l │ │ └── o'Hello │ └── p'Help └── a ├── s'Has ├── v │ └── e'Have └── d'Had └── n └── ' └── t'Hadn't
次に、ha
で始まるすべての単語を検索してみましょう。 デフォルトでは、キーは大文字と小文字を区別しないことに注意してください。
List<String> suggestions = trie.getValueSuggestions("ha");System.out.print(suggestions.toString());
これによりがコンソールに出力されます。 値は変更されません。
Contribution
あなたが開発者であり、貢献したい場合は、プルリクエストを行うことを検討してください。 私は一般的にコードや実装に関する批判をいただければ幸いです。
License
このプロジェクトはApache2.0licenseの下でライセンスされています。