ホームページ  >  記事  >  Java  >  Javaのユニークなコレクションとは何ですか?

Javaのユニークなコレクションとは何ですか?

尚
オリジナル
2019-12-27 09:47:1321185ブラウズ

Javaのユニークなコレクションとは何ですか?

Java コレクション クラスは java.util パッケージに格納され、オブジェクトを格納するために使用されるコンテナです。 Java の非重複コレクションを見てみましょう。

Set: HashSet() の一般的な実装は、順序付けされていない反復不可能なセットです。

#1. Set hashSet = new HashSet();

①. HashSet: 要素の順序は保証できません; 繰り返し可能ではありません; スレッドセーフではありません; セット要素は NULL になる可能性があります;


②. 最下層は実際には配列であり、その存在の意味はクエリを高速化することです。一般的な配列では、配列内の要素のインデックス位置はランダムであり、要素の値と要素の位置の間に明確な関係がないことがわかっているため、配列内の特定の値を検索する場合の場合は、検索値「一連の要素と比較」を変更する必要があります。このときのクエリ効率は、検索プロセス中の比較の数によって異なります。 HashSet コレクションの基になる配列のインデックスと値には、インデックス = ハッシュ(値) という特定の関係があります。この場合、この式を呼び出すだけで要素またはインデックスをすばやく見つけることができます。


③. HashSet の場合: 2 つのオブジェクトが equals() メソッドを通じて true を返す場合、2 つのオブジェクトの hashCode 値も同じである必要があります。


2. Set linkedHashSet = new LinkedHashSet();

①、順番に繰り返すことはできません


基礎となる層はリンク リストを使用しており、ハッシュ テーブル アルゴリズム。リンク リストは要素が追加される順序を保証し、ハッシュ テーブルは要素の一意性を保証します。反復不可能で、一番下で使用されます。 赤黒ツリー アルゴリズムは範囲クエリに適しています。

* TreeSet() パラメータなしのコンストラクターを使用して TreeSet オブジェクトを作成する場合、その中に配置される要素のクラスは Comparable インターフェイスを実装する必要があるため、その中に null 要素を配置することはできません。

上記 3 つの Set インターフェイスの実装クラスの比較:

共通点:


1. どの要素も繰り返してはなりません

2. すべて スレッドセーフなクラスではありません 解決策: Set set = Collections.synchronizedSet(set object)

相違点:

HashSet: 要素を追加する順序は異なります。が保証されており、最下位層はハッシュ テーブル アルゴリズムを使用しているため、クエリ効率が高いです。 2 つの要素が等しいかどうかを判断するには、equals() メソッドは true を返し、hashCode() の値は等しいです。つまり、HashSet に格納される要素は、equals() メソッドと hashCode() メソッドをカバーする必要があります

LinkedHashSet: HashSet のサブクラス 最下層はハッシュ テーブル アルゴリズムとリンク リストを使用しますアルゴリズムにより、要素の追加順序によってもクエリの効率が保証されます。ただし、全体的なパフォーマンスは HashSet よりも低くなります。

TreeSet: 要素の追加順序は保証されませんが、セット内の要素はソートされます。最下層は赤黒ツリー アルゴリズムを使用します (ツリー構造は範囲クエリに適しています)


マップ: キーと値のキーと値のペア、キーの繰り返しは許可されません、値は


1 になります。厳密に言えば、Map はセットではなく、2 つのセット間のマッピング関係です。

2. これら 2 つのコレクション内の各データにはマッピング関係があり、1 つのデータとみなすことができます。それは Entry(key,value) です。マップは複数のエントリで構成されているように見えます。

3. Map コレクションは Collection インターフェイスも Iterable インターフェイスも実装していないため、Map コレクションに対して for-each 走査を実行することはできません。

Java についてさらに詳しく知りたい場合は、

Java 基本チュートリアル
列に注目してください。

以上がJavaのユニークなコレクションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。