A、キュー
キューは、先入れ先出し(FIFO)データ構造であります
図1に示すように、LinkedListのブロッキングインターフェイスは達成されない:インターフェースと実装java.util.Queue java.util.AbstractQueueインターフェイスは
ビルトイン非ブロックキュー:優先度つきキューとConcurrentLinkedQueue
優先度つきキューConcurrentLinkedQueueクラスおよび収集フレームワークに追加した2つの特定のコレクションの実装。
優先度つきキュークラスは、本質的に順序付けられたリストを維持します。キューは、要素に追加されるか、はjava.util.Comparatorは(java.util.Comparableによって達成される)は、それらの自然順序付けに従ってに従って実装コンストラクタに渡さ配置します。
ConcurrentLinkedQueueはリンクされたノード、スレッドセーフなキューに基づいています。同時アクセスの同期は必要ありません。それはキューの末尾に要素を追加し、頭部からそれらを削除しているので、これだけ非常によく、キューのサイズを知るために缶の仕事の共通セットへの共有アクセスを必要としています。
ConcurrentLinkedQueue
1)一般的な方法
*プラン():キューの末尾に指定された要素。
*ポール():キューが空であれば取得し、キューの先頭を削除し、ヌルを返します。
* PEEK():header要素を取得しますが、キューは、それがnullを返す空の場合、キューの先頭を削除しません。
*削除(Object obj)指定されたオブジェクト:、すでに存在していることを要素キューを削除要素は、falseを返しますが存在しない場合は、trueを返します。
*(E e)の追加:キューの末尾に挿入し、指定された要素、戻り成功した場合はtrue、そうでない場合(このメソッドはスレッドセーフではない方法が推奨されていない場合)はfalseを返します。
2)機能
*必要性が、キューを横断する際のサイズ()メソッドを呼び出して通常のisEmpty()。
*のDisallow挿入null要素は、nullポインタ例外をスローします。
*使用する場合ので、メモリオーバーフローの問題に注意を払う必要があり、無制限です。それは適度な状況の同時使用のために素晴らしいではないか、そうでない場合は、あまりにも多くのメモリ・オーバーフローを取る、プログラムのパフォーマンスに大きな影響、致命的。
図2は、インターフェイスのブロックを達成するために:
java.util.concurrentのBlockingQueueのキュークラスとインタフェースをブロック5に加えます。それは本質的に歪みの少ないFIFOデータ構造体です。すぐに使用可能なスペースや要素があるまでスレッドが操作ブロックを実行し、キューから要素を追加したり、削除しません。
5つの異なるキューと、それぞれ提供:
* ArrayBlockingQueue:有界キューの配列に裏打ちされました。
* LinkedBlockingQueue:ノードからのリンクは、オプションの有界キューをサポートしています。
* PriorityBlockingQueue:優先ヒープによる支援、無制限の優先度キューです。
* DelayQueue:優先順位、時間ベースのスケジューリングキューでサポートされているスタック。
* SynchronousQueue:BlockingQueueのインターフェース(ランデブー)を収集するためのシンプルなメカニズム。
二、セットの
セット:何かがほとんどセットに存在するかどうかを知ることができる収集システムのユニークな性質に焦点が、重複した要素が格納されていない
要素の値を保存するための乱れ(預金を必ずしも同じシーケンスが除去されました)これを繰り返すことができません。
平等オブジェクト
2つの参照が等しいヒープ同じオブジェクトを参照。二つの基準hashCodeメソッドの呼び出しは、同じ結果を取得します場合は、クラスのオブジェクトが扱われるオブジェクトのhashCodeメソッドに属していない場合、その後、ハッシュコードは、オブジェクトごとに固有のシリアル番号を返します(javaのは、このターゲット・メモリ・アドレスの数に基づいて計算されます)、2つの異なるオブジェクトのハッシュコード値が等しくなるように、それは不可能です。
あなたがhashCodeメソッドとして二つの異なるPersonオブジェクトを作りたいと方法が等しいと等しい場合は、以下のオブジェクトのダウンをカバーしなければなりません。
1、HashSetの
ハッシュマップ上に実装ハッシュテーブル構造、キーに対応する新たなハッシュマップ要素、固定されたオブジェクトに値のデフォルト。
これは、次の特性があります。
-
重複した要因を許可しないでください。
-
NULL値は挿入できます。
-
順序付けられていない要素(加算と矛盾トラバーサル順序の順)。
-
2つのスレッドが同時に動作する場合は、スレッドセーフでは、符号同期を介しHashSetのは、実現されなければなりません。
2、TreeSetの
赤黒木(小左右大型特殊二分探索木、ルールベースのアルゴリズム)のためのインフラストラクチャ。
カスタム順序は実装することによって、可能にComparator方法,重写equals方法
结果返回大于0时,方法前面的值大于方法中的值;
结果返回等于0时,方法前面的值等于方法中的值;
结果返回小于0时,方法前面的值小于方法中的值;
これは、次の特性があります。
-
ソート挿入要素は、(主要な区別のHashSetので)順序付けられたセットです。
-
代わりに、ハッシュテーブル構造の根底にある赤黒木構造を用いました。
-
NULL値は挿入できます。
-
これは、繰り返し挿入要素を許可していません。
-
スレッドセーフ。
二、リスト