HashMapの、ハッシュテーブル、ConcurrentHashMapの区别

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以前のバージョンに基づいて上記の違い。

おすすめ

転載: www.cnblogs.com/lujiahua/p/11408810.html