ハッシュテーブルは、グループオブジェクトを保存するために使用されるコレクションクラス構造である配布リストとしても知られています。
ハッシュテーブルとは何ですか
配列とベクトルの両方がオブジェクトを保存できますが、オブジェクトのストレージ位置はランダムです。つまり、オブジェクト自体とそのストレージ位置の間に必要な接続はありません。オブジェクトを見つけたい場合は、各要素と特定の順序でのみ比較できます(シーケンシャル検索または2つのポイント検索など)。大幅に削減されます。
効果的なストレージ方法は、他の要素と比較せず、一度に取得できるレコードを取得できることです。これには、オブジェクトのストレージ位置とオブジェクトの重要な属性(kに設定)との間に特定の対応する関係を確立する必要があり、一意のストレージ位置に対応する各オブジェクトに対応する必要があります。検索するときは、チェックするオブジェクトの重要な属性に基づいて、f(k)の値を計算するだけです。このオブジェクトがコレクションにある場合、ストレージ位置f(k)にある必要があるため、セット内の他の要素と比較する必要はありません。この対応する関係fとハッシュメソッドと呼ばれ、このアイデアに従って確立されたテーブルはハッシュテーブルです。
Javaはハッシュテーブルカテゴリを使用して、ハッシュテーブルに関連するいくつかの概念です。
•容量:ハッシュテーブルの容量は固定されておらず、オブジェクトの容量も自動的に増加する可能性があります。
•キー(キー):各ストレージオブジェクトは、キーワード自体またはオブジェクトの一部にすることができます(特定の属性など)。ハッシュテーブルのすべてのキーワードは一意です。
•ハッシュコード:オブジェクトをハッシュテーブルに保存する場合は、キーワードキーを整数データにマッピングして、キーのハッシュコードになる必要があります。
•アイテム:ハッシュテーブルにはそれぞれ2つのドメインがあり、キーワードドメインキーと値ドメイン値(ストレージオブジェクト)です。キーと値の両方がオブジェクトタイプのオブジェクトになりますが、空にすることはできません。
•荷重係数:充填係数は、ハッシュテーブルの膨満感によって表され、その値は上記のハッシュテーブルよりも要素の数に等しくなります。
ハッシュテーブルの使用
ハッシュテーブルには、3つの主要な形式の建設方法があります。
hashtable(); //初期容量は101、最大充填係数0.75
ハッシュテーブル(int容量);
ハッシュテーブル(int容量、フロートロードファクター)
ハッシュテーブルの主な方法を表8-6に示します。
表8-6ハッシュテーブルの定義で定義される頻繁にメソッド
方法 | 関数 |
---|---|
void clear() | ハッシュテーブルを再セットしてクリアします |
Boolean contains(オブジェクト値) | ハッシュテーブルに特定のオブジェクトが含まれているかどうかを判断します。 |
Boolean ContainsKey(オブジェクトキー) | ハッシュテーブルに特定のキーワードが含まれているかどうかを判断します。 |
boolean isempty() | ハッシュテーブルが空になっているかどうかを確認してください、あなたがtrueに戻る場合、そうでなければfalseは返されます |
オブジェクトget(オブジェクトキー) | 返品nullがない場合、対応するキーワードを取得するためのオブジェクト |
void rehash() | Howhに関係なく、拡張ハッシュテーブルはより多くの要素を節約すると、システムは自動的にこの方法を呼び出します。 |
オブジェクトプット(オブジェクトキー、オブジェクト値) | 特定のキーワードを使用して、ハッシュテーブルにオブジェクトを保存します |
オブジェクト削除(オブジェクトキー) | オブジェクトがnullに戻らない場合、ハッシュテーブルからキーワードフェーズに対応するオブジェクトを削除します |
int size() | ハッシュテーブルのサイズに戻ります |
string toString() | ハッシュテーブルのコンテンツを文字列に変換します |
ハッシュテーブルの作成は、新しいオペレーターを介して実装することもできます。その声明は次のとおりです。
havetable has = new Hashtable();
例:
[例8-12]ハッシュテーブルの通過。
// ************ ep8_12.java ******************************* ******************************************** ******************* Import Java.util。*; has.put( "One"、new integer(1)); "、new double(12.3)); set s = has.keyset(); i.next());}}}
結果の実行:
21312.3