検索
ホームページJava&#&ベースJavaのユニークなコレクションとは何ですか?

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 までご連絡ください。
Java(シリアル、パラレル、CMS、G1、ZGC)のごみ収集アルゴリズムは何ですか?Java(シリアル、パラレル、CMS、G1、ZGC)のごみ収集アルゴリズムは何ですか?Mar 14, 2025 pm 05:06 PM

この記事では、さまざまなJava Garbage Collectionアルゴリズム(シリアル、パラレル、CMS、G1、ZGC)、そのパフォーマンスへの影響、および大きなヒープを持つアプリケーションの適合性について説明します。

Java Virtual Machine(JVM)とは何ですか?内部でどのように機能しますか?Java Virtual Machine(JVM)とは何ですか?内部でどのように機能しますか?Mar 14, 2025 pm 05:05 PM

この記事では、Java Virtual Machine(JVM)について説明し、さまざまなプラットフォームでJavaプログラムを実行する際の役割について詳しく説明しています。 JVMの内部プロセス、主要コンポーネント、メモリ管理、ガベージコレクション、およびパフォーマンスの最適化について説明します

JavaScriptを使用したスクリプトにJavaのナショーンエンジンを使用するにはどうすればよいですか?JavaScriptを使用したスクリプトにJavaのナショーンエンジンを使用するにはどうすればよいですか?Mar 14, 2025 pm 05:00 PM

Javaのナショーンエンジンは、Javaアプリ内でJavaScriptスクリプトを可能にします。重要な手順には、ナショーンのセットアップ、スクリプトの管理、パフォーマンスの最適化が含まれます。主な問題には、ナショーンのdeprecによるセキュリティ、記憶管理、将来の互換性が含まれます

自動リソース管理にJavaのリソース付きステートメントを使用するにはどうすればよいですか?自動リソース管理にJavaのリソース付きステートメントを使用するにはどうすればよいですか?Mar 14, 2025 pm 04:59 PM

Javaのリソースでの試行は、ファイルストリームやデータベース接続などのリソースを自動的に閉じることでリソース管理を簡素化し、コードの読みやすさと保守性を向上させます。

Javaの酵素を使用して固定値のセットを表すにはどうすればよいですか?Javaの酵素を使用して固定値のセットを表すにはどうすればよいですか?Mar 14, 2025 pm 04:57 PM

Java Enumsは、固定された値のセットを表し、カスタムメソッドとコンストラクターを介してタイプの安全性、読みやすさ、および追加の機能を提供します。それらはコード組織を強化し、効率的なバリューハンドリングのためにスイッチステートメントで使用できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。