Javaのハッシュテーブル、競合を解決する方法をコンテナクラスツリー、ハッシュマップに対応

ハッシュテーブル:
ハッシュマップ、ハッシュテーブル、ConcurrentHashMapの、HashSetのの
木:
のTreeMap、TreeSetの
CopyOnWriteArrayListとはArrayListのスレッドセーフな変異体である、基礎となる配列の全ての可変動作が(など、セットを追加)の新しいコピーを介してです達成。

ツリーマップから継承されたTreeSetの、ハッシュマップから継承されたHashSetの

エントリ:キーと値の組み合わせ。

ツリーマップのために、それは下の「赤黒木」を使用しているための要素、HashMapの低よりもパフォーマンスの除去要素を追加ツリーマップ手段のエントリのコレクションを、保存します。
新しいエントリのサイクルを通して挿入位置を見つけることが必要な場合に添加元素のTreeMap、こうして比較抵抗性能、
ときに削除ツリーマップ要素、エントリを横断することによって、右を見つけるあなたはまた、消費の性能を比較することができます。
しかし、ツリーマップは、TreeSetのは、HashSetのは、ハッシュマップの上に利点があります:
すべてのエントリのTreeMapは、常にすべての要素が常に指定された照合に基づく秩序状態のままTreeSetの、順序指定されたルールに従ってキーの状態によって秩序維持され

計算hashCodeのHashMapのコールのhashCode()メソッド。Javaで、2つの異なるオブジェクトは、同じハッシュコードを持っている可能性が異なるキーが同じハッシュコードを持つことができるように、それは紛争につながるので。

バケツ:この配列は、要素の位置を格納することができるが、「バケット(バケツ)」と呼ばれ、各バケットは、その指定されたインデックスを有し、バケットシステムの要素は、迅速なアクセスに基づいて、そのインデックスに格納することができます。

メソッドのリストとオープンアドレッシング方法:問題を解決するための単一のリンクリストの形で現れたバケット内部ハッシュマップ、ハッシュテーブルは、ハッシュ値、典型的には二つの方法で競合しています。メソッドオブジェクトのリストは、スロットに対応するハッシュチェーン値の同一のハッシュ値に編成され、開口溝アドレス方法は、場合、検索を使用することができるスロットを占有している続ける場合、検出アルゴリズムを介してですビット。

二種類:

オープンアドレス指定方法:衝突が発生した場合、ハッシュ・テーブル(測定)配列中のプローブを形成するための技術(また、プローブとして知られている)プローブの使用。(オープンアドレスを検出することで、挿入するまでであると挿入することができる細胞で検索セルに沿ってこの配列は、それが特定のキーワードを見つけるまで、またはオープンアドレスを横切って(すなわち、位置は空です) )新しいノードアドレスユニット内に堆積。テーブルを開くときにアドレスを見つけるためのプローブは、ルックアップが失敗したことを、未知の起源のキーワードを示していません。

チェーンアドレス方法:すべてのキーワードが同じ単一のリスト内のノードの同義語をリンクします。選択されたハッシュテーブル長m場合、ハッシュテーブルは[0 ... M-1]からなるヘッド・ポインタによってT mの配列へのポインタとして定義することができます。ノードIの任意のハッシュアドレスが、単一リンクリストのヘッドポインタとしてT [i]の中に挿入されています。Tは、各成分の初期値がヌルポインタであるべきです。

転載します。https://my.oschina.net/134596/blog/668416

公開された53元の記事 ウォンの賞賛5 ビュー427

おすすめ

転載: blog.csdn.net/qq_45287265/article/details/105013831