地図の紹介
鍵を値のオブジェクトにマップします。マップには重複キーを含めることはできません。各キーは、せいぜい1つの値にのみマッピングできます。このインターフェイスは、インターフェイスではなく、完全に抽象クラスである辞書クラスを置き換えます。
マップインターフェイスには、キーセット、値セット、またはキー価値マッピング関係セットの形でマップの内容を表示できる3つのコレクションビューが提供されます。マッピング順序は、イテレーターがマップのコレクションビューでその要素を返す順序として定義されます。一部のマッピング実装は、TreeMapクラスなどの注文を明示的に保証します。他の人は、ハッシュマップクラスなど、注文を保証しません。
注:可変オブジェクトをマッピングキーとして使用する場合は、追加の注意を払う必要があります。オブジェクトがマップ内のキーである場合、オブジェクトの値が等しい比較に影響する方法で変更された場合、マップの動作は不確かになります。これが禁止する特別なケースは、マップが自分自身を鍵として含めることを許可しないことです。マップは値としてそれ自体を含めることが許可されていますが、注意してください。等しいとハッシュコードメソッドの定義は、そのようなマップでは明示されなくなります。
マップインターフェイス:
マップは、キーから値へのマッピングを提供します。マップには同じキーを含めることはできません。各キーは1つの値のみをマッピングできます。マップインターフェイスは、コレクションの3種類のビューを提供します。マップのコンテンツは、キーコレクションのセット、価値コレクションのセット、またはキー価値マッピングのセットと見なすことができます。
ハッシュテーブルクラス
ハッシュテーブルはマップインターフェイスを継承し、キー価値マッピングを備えたハッシュテーブルを実装します。非ヌルオブジェクトは、キーまたは値として使用できます。
put(key、value)を使用してデータを追加し、Get(key)を使用してデータを取得します。これら2つの基本操作のオーバーヘッドは一定です。ハッシュテーブルは、初期容量と負荷因子パラメーターを通じてパフォーマンスを調整します。通常、デフォルトの負荷係数0.75は、時間とスペースのバランスをより適切に実現できます。負荷係数を増やすとスペースを節約できますが、対応する検索時間は増加し、GetやPutなどの操作に影響します。
ハッシュテーブルを使用する簡単な例は次のとおりです。1、2、および3をハッシュテーブルに入れ、それらのキーはそれぞれ「1」、「2」、「3」です。
ハッシュテーブル番号= new Hashtable(); numbers.put( "one"、new Integer(1)); numbers.put( "2"、new Integer(2)); numbers.put( "3"、new Integer(3));
2などの番号を取得するには、対応するキーを使用します。
integer n =(integer)numbers.get( "2"); System.out.println( "2 =" + n);
キーとしてのオブジェクトは、ハッシュ関数を計算することにより対応する値の位置を決定するため、キーとしてのオブジェクトはハッシュコードを実装し、メソッドに等しくなります。ハッシュコードと等しいメソッドは、ルートクラスオブジェクトから継承されます。カスタムクラスをキーとして使用する場合は、非常に注意してください。ハッシュ関数の定義によれば、2つのオブジェクトが同じ場合、つまりobj1.equals(obj2)= trueである場合、ハッシュコードは同じでなければなりませんが、2つのオブジェクトが異なる場合、ハッシュコードは変わらない場合があります。 2つの異なるオブジェクトのハッシュコードが同じ場合、この現象は競合と呼ばれます。競合により、ハッシュテーブルの操作の時間オーバーヘッドが増加します。したがって、HashCode()メソッドを定義して、Hashテーブルの動作を高速化してください。
同じオブジェクトに異なるハッシュコードがある場合、ハッシュテーブルの操作には予期しない結果が得られます(予想されるGETメソッドはnullを返します)。この問題を回避するには、1つのことを覚えておく必要があります。そのうちの1つを書くのではなく、同時にHashcodeメソッドを書き直す必要があります。
ハッシュテーブルは同期されます。
ハッシュマップクラス
ハッシュマップはハッシュテーブルに似ていますが、違いは、ハッシュマップが非同期であり、null、つまりヌル値とヌルキーを可能にすることです。 、しかし、ハッシュマップがコレクション(値()メソッドがコレクションを返すことができる)と見なされる場合、その反復サブオペレーション時間オーバーヘッドはハッシュマップの容量に比例します。したがって、反復操作のパフォーマンスが非常に重要である場合、ハッシュマップの初期化容量を高すぎるように設定しないか、負荷係数が低すぎないようにしないでください。
WeakHashmapクラス
WeakHashmapは、キーへの「弱い参照」を実装する改善されたハッシュマップです。キーが外部から参照されなくなった場合、キーはGCによってリサイクルできます。
上記は、Javaマップインターフェイスの紹介です。 Javaプログラミングを学んでいる学生はそれを参照できます。