A、Java値(コレクション)に設定し、キー - 値(マップ)
格納された値は、リストとセットに分かれています。
リストが注文され、反復可能な
セットは、順序付けられて繰り返すことはできません。決意等しいとハッシュコード、セットに格納されるオブジェクト、及びマストオーバーライドハッシュコードメソッドに等しいです
B、リスト実装クラス:ArrayListを、ベクター、LinkedListの(双方向円形のリンクリスト)
1.基礎となるデータ構造
ArrayListに、ベクトルは、基礎となります高いクエリ効率、低効率欠失の配列に依存している(Vectorがスレッドセーフであり、全体的な効率はArrayListのより低いです)
LinkedListの底依存する方法循環リンクリスト、追加、削除、高効率、低クエリ効率
記憶素子の2条項
ArrayListに、ベクトル、注文し、再現性がnull値を許可中LinkedListの要素、
3.容量拡張
1.5倍の膨張のArrayList
ベクトル増分膨張増分0、2倍の容量拡張、+デルタそうでなければ、元の容量
のない膨張LinkedListの
4.スレッドの安全性
ArrayListに、LinkedListのスレッドセーフ(複数のスレッドがコレクション内の要素のリストにアクセスする必要がある場合は、スレッドセーフにパッケージ化コレクションのコレクションのコレクションを使用することを検討してください)
ベクトルスレッドセーフ
C、セットインターフェースクラス:HashSetの、LinkedHashSetの、TreeSetの
HashSetの
- あなたは同じ要素を持つことができません、あなたがnull要素を有することができます堆積要素は順不同です
- 基礎となるデータ構造は、ハッシュテーブルは一連のテーブルに格納されたハッシュテーブルであり、ハッシュ値は、オブジェクトハッシュコードによって生成されます()
- 唯一の、二つ確保する方法:ハッシュコードを()とequals()メソッド
- 非スレッドセーフ
LinkedHashSetの
- あなたは同じ要素を持つことができません、あなたは、NULL値を持つことができます、要素は順序に厳密に従ってロード
- ハッシュテーブルとチェーンにより構成される基礎となるデータ構造
- 一意性を保証するために、ハッシュテーブルの要素と一致する抽出及び記憶素子を確実にするために、すなわち順序付けられたリスト
- 非スレッドセーフ
TreeSetの
- あなたは同じ要素を持つことができません、ヌル値を持っていません、ソート要素の自然順序に従って
- 基礎となるデータ構造赤黒木(自動平衡二分探索木)です
- 非スレッドセーフ
D、地図の実装クラス:HashMapの、ハッシュテーブル、TreeMapの、のLinkedHashMap
HashMapの
-
スレッドセーフな、高効率。可能ヌルヌル値とキー
-
地図インターフェイスは、ハッシュテーブルに基づいています。ハッシュテーブルの役割は、キーの一意性を確保するために使用されます。
-
一般的な方法の例:
new HashMap<Object,Object>();
ハッシュ表
- スレッドセーフ、効率が低いです。nullのキーとヌル値を許可しません
Laidakedःashanap
-
秩序とMapインタフェースへのリンクのリストを達成するために、ハッシュテーブルに基づいています
-
ハッシュテーブルによってキーの一意性を確保するために、
-
(同じ格納順序と撤回)ソートされたリンクリストの保証債券から
-
一般的な方法の例:
new LinkedHashMap<Object,Object>();
TreeMapの
-
Mapインタフェースは赤黒木ベースを達成することです
-
コンストラクタ
TreeMap(); //使用键的自然顺序构造一个新的、空的数映射 //构造一个新的、空的树映射,该映射根据给定比较器进行排序 TreeMap(Comparator<?super K>comparator)
ConcurrentHashMapのとHashMapのハッシュテーブル、ハッシュテーブルの違い
- HashMapのは、ヌルまたは可能なハッシュテーブルではないキー値であり、
- HashMapのは、スレッドセーフな、高効率ではありません。ハッシュテーブルは、スレッドセーフ、効率が低いです
- ConcurrentHashMapのもスレッドセーフで、それは大規模な地図、地図にあるそれぞれいくつかの小さなプラスロックに分割し、ハッシュテーブルよりもので、より効率的です。