0

Python、Java、C++11 などの一部のプログラミング言語には、標準ライブラリの一部としてハッシュ テーブルがあります (ただし、拡張機能を持つ別の名前である場合もあります)。高レベルのアルゴリズムの観点から、何が実装されているかを理解したいと思います。具体的には:

  • データを配置する場所を指定するためにキーのどの機能が使用されますか (つまり、使用されるハッシュ関数は何ですか)?
  • 衝突を解決するためにどのアルゴリズムを使用していますか? 例として、単純なチェーンを使用するものはありますか?
  • ハッシュ関数を選択するためにランダム性を使用することはありますか?
4

1 に答える 1

2

ジャバの場合、

ハッシュ関数自体はどのように計算されますか?

それらはクラス自体によって実装されますint hashCode()

衝突を解決するためにどのアルゴリズムを使用していますか? 例として、単純なチェーンを使用するものはありますか?

通常、単純な連鎖。Java 8 は、文字列の衝突に対してツリーをサポートします。

ハッシュ関数を選択するためにランダム性を使用することはありますか?

いいえ、DOS 攻撃を避けるための文字列要素/キーを除きます。

于 2013-09-26T14:58:15.937 に答える