ご理解、知識のJavaコレクションフレームワーク

HashMapのは:キー値のスタイルです

底部層は+ +ブラックツリーリストストレージアレイに戻し、リストスタイルの配列に追加されます

時間自体はサイズが指定されていない作成した場合、配列は、メインである、デフォルトのサイズは16です。

キーが発見される同一の値のキー入力を持つ場合、リンクされたリストを比較するキー値eques法を用いて、配列表に対応するキー値、位置の円形のリンクリストを計算ビット単位を使用して、ハッシュコードに対応する得られ、置換値新しい値値値は、見つからない場合は、リストに挿入しました。

ときに大きなしきい値、すなわち、アレイのサイズ*負荷率、必要な拡張の容量は、アレイの2倍の電流容量に拡張されます。新たに新しいハッシュ値を計算することによって生成された配列要素に、元のハッシュ(また、バレルアレイ素子と呼ばれます)

アレイのサイズが初期化されるときに初期化ハッシュマップ容量

バケット変換素子6未満であるか、またはリストに等しくなる場合、8の赤黒木鎖長に換算します

HashSetの:コレクションを繰り返す必要はありません

HashSetのHashMapのので、ハッシュマップのキー値で繰り返すことができない、ため、キー値は、ハッシュマップである要素はハッシュマップが乱れているため、それは、HashSetのセットを繰り返すことができない、HashSetの値に挿入し、基礎となる構造でありますHashSetのの値は無秩序です

ArrayListの:順序付きコレクションを繰り返すことができます

ArrayListの下の配列は、デフォルトのサイズは10であり、かつ配列サイズは、配列には、拡張容量に1.5倍の電流であり、十分ではありません。次に、新しい配列要素の長い列に移動しました。使用Arrays.copyOf();方法

あなたが固定位置にある要素を挿入しようとしているときはいつでも、位置の値は後方に移動され、値が1つの位置の後ろに前方に移動したときの位置の値を削除します

底部が配列されているので、要素が繰り返し注文することができ

LinkedListの:再現性の順序集合

LinkedListの道円形リンクリスト、および底がヘッドノードでは、値が格納されていない場合、長さの概念がない、デフォルトのサイズは初期化されていません

挿入されると、デフォルトでは、同じフィールド値を通過する必要性を除去する必要性を削除したとき、最後の1つに挿入します

/ 2のサイズよりも大きい場合、サイズ/ 2の大きさと位置を決定するために、固定された位置を削除する場合/ 2が0から横断、サイズよりも小さい場合、サイズ/ 2の位置は、横断しています

使用同期の修正、効率の下にハッシュテーブルの方法

concureentHashMapスレッドセーフのHashMap

揮発性INT sizeCtl、状態管理、テーブルがゼロ未満の初期化である場合、スレッドがブロックされ、それ以外の場合はCASを交換交換

  • )(置く主要な要件は、空にすることはできませんされています
  • 2つのハッシュ後、データは一様に衝突の数を減少させる、分散され
  • タブがない初期化操作(シングルスレッド)initTableを呼び出して、初期化されているかどうかを確認
  • 私は直接に、存在しない位置の配列要素
  • もしヘルプ拡大に容量拡張処理、マルチスレッドを受けているMOVE動作時の位置I、
  • iは要素である位置に存在する場合、ノードが同期ロックされ又は赤黒木リストが決定され、対応する挿入ルールに挿入されます
  • 方法を取得します:
  • 渡されたキー、対応するハッシュ値を取得します
  • 次いで、それを現在のテーブル列が空であるか否かを判断します
  • テーブルに格納された位置に指定されたキーを計算します
  • 赤黒木またはリスト依存変換処理の方法
  • ヌルが返されませんがあります
     

 

公開された15元の記事 ウォンの賞賛0 ビュー1067

おすすめ

転載: blog.csdn.net/ma316110/article/details/85244895