Java のセット コレクションを理解する方法
この記事では、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);
出力結果:
上記のコードと実行結果から、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);
出力結果:
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);
出力結果:
合格上記のコードと出力結果から、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); }
この問題を解決したい場合は、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; } }
- 最初の要素が 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(); } });
Set<People> p = new TreeSet<>((o1, o2) -> o1.getAge()-o2.getAge());
推奨学習: 「Java ビデオ チュートリアル 」
以上がJava のセット コレクションを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4
