1、サブインターフェースの地図、リスト、およびコレクションセットはありますか?
地図コレクションとインターフェイスの上部セットのために結ばれ、無継承;リストとセットのサブインタフェースCollectionです。
2は、その中のJavaの共通セットについて話しています。
次のようにJavaのの共通セットにまとめることができます。
- 地図Collectionインタフェースおよびインタフェースは、すべてのコレクションフレームワークの親インタフェースです
- コレクションインタフェースは、サブインターフェイスが含まれます:インタフェースおよびインタフェースListを設定します。
- 主にマップインタフェースの実装クラス:HashMapの、TreeMapの、Hashtableの、のLinkedHashMap、ConcurrentHashMapのプロパティなど
- 主にインターフェイスの実装クラスを設定します。LinkedHashSetのなどのHashSet、TreeSetの、
- メインインターフェイスの実装クラスをリスト:ArrayListを、LinkedListは、スタックとベクトルなど
3、HashMapのとHashtableの違いはありますか?
以下のようにHashMapとHashtableの違いをまとめることができます。
- Hashtableのsynchronizedキーワードを使用してスレッドセーフであり、HashMapのは、同期、スレッドセーフでないを考慮していません。
- HashMapのキーとしてNULLを可能にし、ハッシュテーブルのキーとしてnullを許さ、ハッシュテーブルではない値がヌルであってもよいです。
4、HashMapのは、右のスレッドセーフですか?あなたは私の例を与えることはできますか?
- 主のアカウントでのHashMapのスレッドセーフ拡張のためのマルチスレッド環境で発生する可能性が無限ループにHashMap
- その内部実装のために安全なHashtableのスレッドはので、他の方法で同期削除とプットを使用して同期されたシングルスレッドセーフなメソッドを使用します。しかし、複数のメソッドの動作を組み合わせて、スレッドの安全性は保証されません。 例えば、動作中のスレッドを取得し、多くの場合、境界及びその他の異常のうち添字つながり、動作中のスレッドを削除します。
5、Javaは(高速フェイル)ファスト失敗するメカニズムを設定します。
クイック失敗は、Javaの集合である誤り検出メカニズム、構造上の運用変更のセットに複数のスレッドを、それをすることが可能であるフェイルファスト生産します。
たとえば、次の二つのスレッドが存在すると仮定する(スレッド1および2スレッド)、セットAにイテレータ要素を横断するスレッドによって、ある時点でスレッド2がセットAの構造修飾(上記構造はむしろ、単によりも、修飾されています)要素のコレクションの内容を変更するので、この時間は、プログラムがありスローさ にConcurrentModificationExceptionが失敗に迅速に高速フェールが生じ、異常。
6、実装のノウハウを基礎となるHashMapの構造?
HashMapのは、達成するためにデータ構造の基礎となる配列+リスト形式、JDK8およびそれ以降のバージョンを使用して配列+ +リストは、赤黒木の実装では、リストは、クエリの速度低下に起因する問題を解決するには長すぎます。
7、ハッシュマップの初期容量、負荷係数、増分展開は数ですか?
ハッシュマップ16、負荷率の初期容量は0.75であり、増分は1倍膨張体積です。容量拡張後のHashMap 16、32の容量場合。HashMapの拡張要素の数である(配列やリンクされたリスト+赤黒木を含む)が膨張した後に16 * 0.75 = 12開始を超え。
8、HashMapの理由の長さが2の累乗でありますか?
- 我々は、によって、キー値ペアHashMapを挿入する行っ長-1キーと操作のハッシュ値クエリ効率HashMapを向上させることができ、現在の位置決めキー、コリジョン(衝突)の2数のパワーを達成するために
- 長さが2の累乗である場合、長さ1は、11111 ......バイナリ形式に変換する必要があり、バイナリhの運転効率が非常に速くなり、スペースを無駄にしません
- 長さが2の累乗でない場合、そのような長さ15と、長さ-1は、対応するバイナリ1110 14であり、hが動作中で、最後のビットは0であり、0001,0011,0101,1001,1011これらの要素の位置0111,1101が格納されることはありません、そしてかなりの無駄なスペース、または悪化、このような場合は、アレイの位置は、さらに増加に衝突の可能性を意味し、配列の長さよりもずっと小さく使用することができます、クエリの効率を遅くします!これは、スペースの無駄になります。