、Java Collections Frameworkの基本を仕上げ

コレクションインタフェース

コレクションインタフェース

コレクションは、インターフェースの最も基本的なセットである、コレクションオブジェクトの基を表し、Java(登録商標)を直接収集クラスから継承されていませんだけサブインターフェースが(例えばリスト及びセットとして)継承提供します。

非ユニークな、順不同オブジェクトのセットを格納Collectionインタフェース。

 

Listインタフェース

リスト・インターフェースを正確各要素の挿入位置は、リスト要素のインデックスを作成してアクセスすることができる制御するために、順序付けられた集合であり、最初の要素のインデックスは0であり、同じ要素を可能にします。

インターフェイスリストのセットを保存する(挿入された配列)オブジェクトを命じた、ユニークではありません。

 

インターフェイスを設定します

セットコレクションはまったく同じインターフェースを持っていますが、異なる動作上、設定して重複した要素が保存されません。

ユニークな、順不同オブジェクトのセットを格納するためのインタフェースを設定します。

 

SortedSet

継承セット、順序付きセットを保存します。

 

地図インタフェース

キーオブジェクトのセットを格納Mapインタフェースは、値のマッピングにキーが提供されます。

 

Map.Entry

要素は、地図中(キー/値のペア)について説明します。地図は内部クラスです。

 

SortedMapの

地図を継承するので、昇順で開催されたキー。

 

の設定とリストの違い

1.設定インターフェイスインスタンスストアのものは無秩序、データを複製しません。整然とした物事、Listインタフェースのインスタンスストレージの反復可能な要素。

2.低検索効率は、高効率のインサートは、挿入、削除、および位置の変化を起こさないであろう要素を削除します。

3.リスト・アレイなどが、自動的に、動的に拡張リストに従って格納された実際のデータの長さを増加させることができます。それは他の要素の位置の変化の原因となりますので、効率の要素の高効率、低挿入や削除の要素を検索します。

 

一般的なコレクション実装クラス

配列リスト

Listクラスは、クラスインターフェース、可変サイズ、ランダムアクセスのアレイを実装し、より優れた性能を提供する要素を横切ります。

このクラスは、非同期であり、マルチスレッドの場合には使用しないでください。ArrayListのは、現在の50%の長さ、低い挿入及び欠失効率を高めます。

 

LinkedListの

このクラスは、インタフェースがnull要素を許可するリストを実装します。複数のスレッドがリストの同僚にアクセスする場合は、リストを作成するために使用される主なデータ構造は、クラスは、メソッドを同期していない、あなたは自分のアクセス同期ソリューションを実装する必要があり、構造リストを作成することであるリストを同期しています。例えば:

Listlist = Collections.syncronizedList(新しい LinkedListの(...))。

LinkedListの低いクエリ効率。

 

HashSetの

セットクラスは、要素がnull値が、最大が含まれている可能、インターフェースは重複要素は、集合の要素の順序を保証するものではありませんことはできません実装します。

 

LinkedHashSetの

これは、設定されたインターフェイスのハッシュテーブルとリンクリストの実装の予測可能な繰り返し順序を持っています。

 

HashMapの

これは、キーと値のマッピングの内容を格納するハッシュテーブルです。

マップインタフェースの実装クラスのクラスは、キー値格納データのハッシュコードによる高速アクセス速度を有し、1つのレコードキーの最大値がnullである、スレッド同期がサポートされていません。

 

LinkedHashMap

順序内の要素の自然順序の要素を使用して、ハッシュマップから継承されています。

 

 

 

Javaの内部1.新しいオブジェクトが何をやっていましたか?

ビューの静的な観点から、新しいオブジェクトは、クラスのオブジェクトのインスタンスを作成することです。ビューのJVM動作角度から、ときに、新しいJVMバイトコードの実行、最初のクラス最初のロード、クラスが初めてである場合、クラスは、メモリおよび初期設定にロードされていないに見えます。ロードは、アプリケーションの仮想マシンのメモリ・スタック割り当てられたオブジェクトインスタンス完了後にオブジェクトインスタンスのメモリ空間内のメモリ割り当てをヒープます。

2.抽象クラスは、コンストラクタを定義していますか?もしそうなら、新しい抽象クラスかどうか?

抽象クラスはまた、新しい抽象クラスのコンストラクタを定義しますが、ないかもしれません。

3.それは何がポイントですコンストラクタを定義する新しい抽象クラスではないので?

抽象クラスのコンストラクタは、別のクラスのコンストラクタから呼び出されるコンストラクタのチェーンが、その効果は抽象クラスのいくつかの初期値であってもよい初期化し呼び出すことができます。

4.文字列は、基本データ型かどうか?これのStringBuilder、StringBufferの違いは何ですか?

文字列は、プリミティブデータ型ではありません。

それは割り当て、プログラムの中で数回ステッチすることができますが、文字列の定義の後、不変であるが、実際には各課題は、メモリ内のメモリ空間を再オープンすることです。

StringBuilderとStringBufferのは、StringBuilderのは、スレッドセーフではありません、彼らはメモリ内のスペースの割り当てを開きません、変数、何度もあり、StringBufferのは、スレッドセーフです。

どのような内部5.のStringBuilderとStringBufferの実装原理?

違いは、スレッドセーフである、appendメソッド内のStringBufferのStringBufferとSpringBuilderはsynchronizedキーワードを追加することです。

それらはAbstractBuilderから継承され、内部実装は、レッグカフアレイは、アレイ16の初期長さです。実際の配列変数にコピー内部System.arraycopyの列と呼ばれる文字列連結方法を、追加呼び出すとき。

何6. StringBuilderの膨張機構?

文字列の配列内のStringBuilderは、デフォルトのサイズは、拡張前の配列の新しいサイズに、実行される、容量が16を超える場合、16倍アレイ+2、34の大きさの、すなわち最初の膨張の大きさです。配列の前の拡大は、新しい配列にコピーされます。

7.文字列str =「」と文字列str =新しい文字列(「B」)の違いは何ですか?

文字列strの=「A」は、最初に直接に存在する場合、なぜそれに定数プールとポイントを作成しないで、一定のプール「」文字列かどうかを知る必要があります。

文字列str =新しい文字列(「B」)は、それにヒープ列オブジェクト・インスタンスのメモリ、及びポイントで作成され、それはまた、定数プール内の「B」オブジェクトを作成します。

8. ==と違いに等しいですか?

値は、比較の基本的な種類を比較の問題である場合==、アドレスを参照します。

比較の対象は、equalsメソッドをオーバーライドしていない場合、それが参照アドレス事の多い、等しいです。あなたは、オブジェクトがequalsメソッドをオーバーライドします比較すると、オブジェクトの内容が同じかどうかを比較します。

equalsメソッドをオーバーライド何9.注意を払う必要がありますか?

equalsメソッドを書き換える際に、hashCodeメソッドをオーバーライドする必要があり、hashCodeメソッドは、オブジェクトのハッシュ値を計算することです。

Javaでそれを提供しています。

スケジュール設定がtrueの場合、自分のhashCodeは必ずしも等しくなります。

偽に等しい場合、それらは同じハッシュコードであってもよい等しいが等しくなくてもよい、すなわち、ハッシュコード等しい、等しい必要はないに等しいです。

主にセットで使用されるオーバーライドhashCodeメソッドは、決定した理由。

クラスがhashCodeメソッドをオーバーライドしない場合は、2つのオブジェクトが等しい場合にのみ、書き換える方法がtrueに等しい等しく、彼らは同じhashCoefficientではありません。彼らは、それらのハッシュ値のマップへのキーとして設定されている場合、彼らはキーの同じ地図にならないように、この時点では、この時点では、論理的にマップ内の2つの同じキー値が存在しないだろう、等しくありませんプログラムのための私たちの期待に沿っインチ だから、オーバーライドメソッドは、hashCodeメソッドをオーバーライドする必要があります等しいです。

10.どのようなオーバーライドhashCodeメソッドは注意を払う必要がありますか?

ハッシュ関数の設計では、競合を避けるために試してみてください。あなたが頻繁にハッシュ衝突を発生させる場合はMapのキーターゲットが異なるハッシュ値に保存されているように、位置への鍵となり、地図のパフォーマンスに影響を与えます。

 

オリジナルリンク:https://www.cnblogs.com/yulinfeng/p/11371189.html

おすすめ

転載: www.cnblogs.com/763977251-sg/p/11367501.html