1. ホーム
  2. java

[解決済み] JavaにTrieはあるのか?[重複しています]

2022-03-04 14:09:01

質問

<ブロッククオート

重複の可能性があります。
Javaでの標準的なTrieベースのマップの実装はどこにありますか?

JavaでTrieを使いたいのですが、使える実装はありますか?(探したのですが見つかりませんでした)。

どのように解決するのですか?

Javaコアライブラリにtrieデータ構造がない。

これは、トライが通常文字列を格納するように設計されているのに対し、Javaのデータ構造はより一般的で、通常、任意の Object (等号とハッシュ演算を定義)に限定されることもあるが、その場合は Comparable オブジェクト(順序の定義)。シンボルのシーケンス(sequence of symbols)を表す一般的な抽象表現はありません。 CharSequence は文字列に適しています。 Iterable 他の種類の記号の場合

もうひとつ、Javaで従来のトライを実装しようとすると、JavaがUnicodeをサポートしているという事実にすぐに直面します。何らかのスペース効率を得るためには、トライの文字列をシンボルのサブセットに限定するか、シンボルでインデックスされた配列に子ノードを格納する従来のアプローチを放棄しなければなりません。これは、トライがコアライブラリに含まれるほど汎用的でないと考えられるもう一つの理由であり、自分で実装したりサードパーティのライブラリを使う場合に気をつけるべきことかもしれません。