HashMapのハッシュテーブルの違いは何ですか?
セキュリティスレッド:
ハッシュテーブルの方法は同期されている、とのHashMapのデフォルトのメソッドは非同期です。マルチスレッド環境では、我々は同期プロセスを増やす必要があり、直接ハッシュテーブルを使用することができますが、自分のHashMapを使用します。
継承:ハッシュテーブルは、継承された時代遅れのDictionaryクラスに基づいています。HashMapのAbstractMapのは、抽象クラスは、Mapインタフェースを実装して継承されました。
これは、null値を許可します、キーと値のハッシュテーブルがnull値を許可されていない、それ以外の場合は、NullPointerExceptionがスローされます。唯一のそのような結合としてヌル鍵、ハッシュマップは、ヌルの値に対応する1つまたは複数のキーを有することができます。
デフォルトの初期容量と拡張メカニズム:配列のハッシュテーブルの初期サイズは11であるハッシュ、それは* 2 + 1歳を向上させる方法です。デフォルトのHashMapのハッシュアレイ16の大きさ、及び2の累乗でなければなりません。地図のハッシュ()記事は、最も徹底していない他の2つの分析にネットワーク全体の理由。-HollisChuangのブログ
異なるハッシュ値:ハッシュテーブルに直接のhashCodeオブジェクト。HashMapのは、ハッシュ値を再計算します。
異なる達成するために内部のトラバース:ハッシュテーブル、HashMapのは、Iteratorを使用しています。そして、歴史的な理由のために、ハッシュテーブルはまた、列挙方法を使用していました。列挙は、高速フェイルをサポートしていないと、高速フェールサポートし、イテレータトラバーサルのサポートのハッシュテーブルは、高速フェール、IteratorをHashMapの実装
HashMapのとConcurrentHashMapの違いは?
彼らが達成するためにバケット配列を使用しているもののConcurrentHashMapのとHashMapの実装は、同じではありませんが、HashMapのではないながら違い、セグメント化されたバレルのConcurrentHashMapの配列は、あります。
各セグメントにおけるConcurrentHashMapのは、ロックによって保護されています。HashMapのいかなるロック機構はありません。そのため、かつてのセキュリティスレッド、スレッドセーフではありませんされています。
PS:jdk1.8以前のバージョンに基づいて上記の違い。