2012-04-27 12 views
1

数時間後、私はインターネットからの情報を検索しましたが、私はまだ何も確信していません。私の問題は:私はアンドロイドデバイス(Javaベース)の辞書を実装したい、私の要件は速度とメモリ効率ですが、私は検索するために使用するデータ構造を決定することができませんでした。 私は、データ構造のリストを持って、私は彼らを理解し支援し、いずれかを選択します。どのデータ構造を選択する必要がありますか? [Androidディクショナリ]

  • 三項ツリー
  • トライ
  • アホ - Corasickツリー
  • [...あなたがDSを提案...]

私たちがそれを見つけた後、誰かが結果(多くの分野:発音、意味、例文...)を得ることについて私を導くことができますか?これらの情報を別のデータファイルに保存しますか?

+2

あなたの質問は非常に混乱しています。 HashMapと呼ばれる組み込みのキーと値のペアのデータ構造があると言われています。http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html –

+0

また、http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html –

+0

読んでいただきありがとうございます。私の辞書はオープンソースの辞書データファイルを使用してインデックスを作成します。いくつかの辞書にする。言葉が非常に大きく、HASHMAPはメモリ効率が悪く、接頭辞が同じ単語を私に与えることはできません。私は1つのツリーDSを使用する予定です。私に別のガイドを提示してください – Kiradev

答えて

0

これはいくつかの方法で実装できます。その1つはTrieです。ルートは数字で表され、ノードは単語の集合を指します。トライの使用方法について説明しています

+0

ええ、私はそこからいくつかの新しい良いを参照してください。そして、あなたは私がstardict-goldendictとしてオープンソースのマルチディクショナリを作ることを学ぶことができる場所を教えてください。 – Kiradev

1

データ構造を検索する前に、設計の主な問題点を挙げる必要があります。この辞書はどのような機能を提供していますか?それの主な特長は何ですか?高速検索?スペースコンパクト?挿入/削除はフレンドリーですか?フレンドリーな相互参照?あなたの心の中にこれらがあるときだけ、あなたは候補構造がどれほど良いかを測ることができます。

+0

あなたの助けに感謝します。私が言ったように、私はそれが速く実行する必要がありますし、メモリコンパクトさ。他の辞書と同じプレフィックスと共通検索を持つリスト単語を検索することができます。私はこれらのDSの利点と弱点について理解しているだけです。 – Kiradev

+0

Trieと3値ツリーは両方ともプレフィックス検索/リストの良い候補です。 Trieは高速ですが、3分木よりはるかに多くの領域を使用します。 Hashtableも高速ですが、プレフィックスリストはサポートしていません。 – HelloWorld

+0

Thanksssss、私はあなたが私を助けることができるかどうか、私はより良いDSを逃すかどうかわからない? – Kiradev

0

Hunter Mcmillenのコメントに同意します。あなたがSortedMapであるJava TreeMapを使用することができます定期的な辞書のようにアルファベット順にソートされる単語が必要な場合。

関連する問題