ハッシュマップとハッシュテーブルの違いは、しばしば他の人から尋ねられます。今日はここにまとめます。
(i)相続の歴史は異なります
パブリッククラスのハッシュテーブル拡張辞書機器Mappublic Class Hashmap拡張アブストラクトマップ実装地図
ハッシュテーブルは辞書クラスから継承され、ハッシュマップはJava 1.2によって導入されたMAPインターフェイスの実装です。
(ii)異なるセキュリティ
Hashmapは非同期であり、ハッシュテーブルはデフォルトで同期されています。つまり、ハッシュテーブルはスレッドセーフであり、複数のスレッドがハッシュテーブルを共有できます。また、正しい同期がない場合、複数のスレッドではハッシュマップを共有できません。 Java 5は後にCONCURRENTHASHMAPを提供します。これはハッシュテーブルの代替品であり、ハッシュテーブルよりもスケーラビリティが優れています。もちろん、以下でHashMapを同期させることができます。
マップM = collections.synchronizemap(hashmap);
(iii)可能なヌル値で同じまたは類似しています
HashMapを使用すると、テーブルエントリのキーまたは値としてnull値を使用できます。ハッシュマップには空のキーになる可能性のあるレコードは1つだけですが、任意の数のエントリは空の値になる可能性があります。つまり、テーブルに検索キーが見つからない場合、または検索キーが見つかったが空の値である場合、get()はnullを返します。ハッシュテーブルは機能しませんが、鍵も値もnull値を許可しません。
(iv)2つのトラバーサル方法の内部実装は異なります
ハッシュテーブルとハッシュマップは両方ともイテレーターイテレータを使用します。 Hashmapのイテレーターは故障の反復因子であり、Hashtableの列挙型イテレーターはフェールファストではありません。歴史的な理由により、Hashtableは列挙方法も使用します。
(v)ハッシュ値のさまざまな使用
ハッシュテーブルはオブジェクトのハッシュコードを直接使用しますが、ハッシュマップはハッシュ値を再計算する必要があります。
(vi)内部実装方法の配列の初期サイズと拡張方法は異なります。
ハッシュテーブルのハッシュアレイのデフォルトサイズは11で、増加する方法は古い*2+1です。ハッシュマップのハッシュアレイのデフォルトサイズは16であり、2の指数でなければなりません。
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!