2012-02-20 20 views
0

ハッシュ関数を書くのに助けが必要です。私はあまりにもそれらをあまり理解していないが、私は単語のリストのために1つを作る必要があります。私は、Word Searchの「辞書」に表示される単語検索のすべての単語を検索するプログラムを作成しています。たとえば、パズルのカテゴリが「食べ物」だった場合、辞書の中のいくつかの単語は、リンゴ、ニンジン、オレンジ、ヨーグルトなどです。私はダブルハッシュと線形プロービングの両方でこれを行う必要がありますが、私は理解していると思っていますが、そうするには良いハッシュ関数を作る方法がわかりません。誰でも助けることができます>Javaハッシュ関数

+0

なぜ既存のハッシュテーブル/マップを使用できませんか? – Kent

+1

これは宿題のように聞こえます。そうであれば、質問を編集して「宿題」タグを追加してください。 – ruakh

+0

これは宿題のようです。そうであれば、組み込みのStringハッシュ関数を使うことができます。これはかなり良いです。私はあなたがハッシュテーブル自体に焦点を当てることができると思います。宿題やStringハッシュ関数の使用が間違っている場合は、私に知らせてください。 – BlackVegetable

答えて

2

私の知る限り、一連の単語に対してハッシュ関数を構築する必要があります。各単語のhashCode()のシンプルな連続した排他的論理和(単語順序が重要であれば+回転する)は良い仕事をします。

もしわからない場合は、ハッシュ関数を作成し、このクラスのEclipseでSource - Generate hashCode() and equals()コマンドを実行する必要があるクラスを作成します。

+0

衝突の解決を確認するには、バケット#1にマッピングされているすべてのようなひどいハッシュ関数を使用し、デバッガで実行します。このようにして、線形プロービングがどのように機能するかを見ることができます。アレックスのような素晴らしいハッシュ関数は、おそらくあなたからの学習機会を盗んだり、あなたのエンドゴールにきれいに到達したりするでしょう。 – BlackVegetable