この記事では、java に関する関連知識を提供します。主にセット コレクションに関する関連問題を紹介します。セット コレクションの特徴は、不規則で、繰り返しがなく、インデックスがありません。以下は見てみましょう。それがみんなに役立つことを願っています。
推奨学習: 「java ビデオ チュートリアル 」
セット シリーズ コレクションの機能:
- 無順序: アクセス順序が矛盾しています
- 重複なし: 重複を削除できます
- インデックスなし: インデックス付きメソッドがないため、通常のメソッドは削除できませんループトラバーサルの場合、要素はインデックスによって取得できません。
Set コレクション実装クラスの機能:
HashSet: 順序なし、重複なし、インデックスなし
LinkedHashSet:順序あり、重複なし、インデックスなし
TreeSet:並べ替え、重複なし、 No Index
Set コレクションの機能は基本的に Collection の API と同じです。
HashSet コレクション
HashSet コレクション:
Set<string> set = new HashSet(); set.add("石原里美"); set.add("石原里美"); set.add("工藤静香"); set.add("朱茵"); System.out.println(set); set.remove("朱茵"); System.out.println(set);</string>
出力結果:
上記のコードと実行結果から、HashSet コレクションが無秩序で反復していないことがはっきりとわかります;
上の図と組み合わせると、HashSet がコレクションはできません データは get() メソッドのインデックスを通じて取得されます。コレクション内のデータを削除する場合、データは対象を絞った方法でのみ削除できます。
LinkedHashSet コレクション:
LinkedHashSet コレクション:
Set<string> set = new LinkedHashSet(); set.add("石原里美"); set.add("石原里美"); set.add("工藤静香"); set.add("朱茵"); System.out.println(set); set.remove("朱茵"); System.out.println(set);</string>
出力結果:
Passed上記のコードと出力結果を比較すると、無秩序と順序の違いがわかります。前者は受信データの順序を乱しますが、後者は入力データの順序でデータを格納するため、出力時間は順調です。
TreeSet コレクション:
TreeSet コレクション:
Set<integer> set = new TreeSet(); set.add(13); set.add(23); set.add(23); set.add(11); System.out.println(set); set.remove(23); System.out.println(set);</integer>
出力結果:
合格上記のコードと出力結果から、TreeSet がソートを特徴とする理由、つまり、格納されたデータが Java のデフォルトのソート方法に従ってソートされる理由を文字通り理解できます。
ただし、この時点で People などのカスタム オブジェクトを格納すると、TreeSet を直接並べ替えることができず、エラーが発生します。
//People类: public class People{ private String name; private int age; private String classroom; public People(){ } public People(String name, int age, String classroom) { this.name = name; this.age = age; this.classroom = classroom; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassroom() { return classroom; } public void setClassroom(String classroom) { this.classroom = classroom; } @Override public String toString() { return "People{" + "name='" + name + '\'' + ", age=" + age + ", classroom='" + classroom + '\'' + '}'; } } //main方法: public static void main(String[] args) { Set<people> p = new TreeSet(); p.add(new People("张三",19,"智能")); p.add(new People("李四",18,"数据库")); p.add(new People("王五",20,"渗透")); System.out.println(p); }</people>
この問題を解決したい場合は、TreeSet コレクションのストレージの種類をカスタマイズする必要があります。この問題を解決するには 2 つの方法があります: 1 つは、実装するクラスをカスタマイズすることです。 Comparable インターフェイスと内部の CompareTo メソッドを書き換えてルールを指定します。もう 1 つのは、ルール定義用の独自のコンパレータ オブジェクトを持つコレクションです。
方法 1: カスタム クラスは Comparable インターフェイスを実装し、compareTo メソッドを書き換えて比較ルールを指定します (冗長で無関係なコードはここでは繰り返さず、コードの重要な部分のみを示します) ) )
//改变的第一个地方:实现Comparable类 public class People implements Comparable<people> { //改变的第二个地方:重写Comparable类中的compareTo方法 @Override public int compareTo(People o) { return this.age-o.age; } }</people>出力結果 (年齢に応じて比較):
- 最初の要素が 2 番目の要素より大きいとみなされる場合、正の整数を返すことができます。
- 最初の要素が2 番目の要素より小さいと見なされます。負の整数を返してください。
- 最初の要素が 2 番目の要素と等しいと思われる場合は、0 を返してください。現時点では、Treeset コレクションには 1 つの要素のみが保持されます。両方とも重複とみなされます
方法 2:コレクションにはルール定義用のコンパレータ オブジェクトが付属しています
Set<people> p = new TreeSet(new Comparator<people>() { @Override public int compare(People o1, People o2) { return o1.getAge()-o2.getAge(); } });</people></people>元のベースに基づいてコレクションの作成を変更します。その比較基準は以前の定義方法と似ており、比較的以前の方法の方が便利で高速です。ここで、以前に学習した知識「ラムダ式」の一部を復習し、コード ブロックを簡略化することもできます。
Set<people> p = new TreeSet((o1, o2) -> o1.getAge()-o2.getAge());</people>ラムダ式を学習したことがない場合、またはラムダ式の知識が明確でない場合は、Java でラムダ式を理解する方法を参照してください。この記事の説明を簡略化すると、何か役に立つかもしれません。
推奨学習: 「Java ビデオ チュートリアル 」
以上がJava のセット コレクションを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
