目次
HashSet コレクション
ホームページ Java &#&チュートリアル Javaでセットコレクションを適用する方法

Javaでセットコレクションを適用する方法

Jun 03, 2023 am 08:22 AM
java set

Javaでセットコレクションを適用する方法


シリーズ コレクション機能の設定:

  • 順序なし: アクセス 順序は次のとおりです。 inconsistent

  • 重複なし: 重複は削除可能

  • インデックスなし: インデックス付きメソッドがないため、通常の for ループ走査は使用できません。および要素はインデックスによって取得できません

Set コレクション実装クラスの機能:

HashSet: 順序付けされておらず、繰り返しもなく、インデックスなし

LinkedHashSet: 順序付け済み、非繰り返し、インデックスなし

TreeSet: 並べ替え済み、非繰り返し、インデックスなし

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);
ログイン後にコピー

出力結果:

Javaでセットコレクションを適用する方法

##上記のコードと実行結果により、 HashSet コレクションが無秩序で反復していないことがはっきりとわかります;

Javaでセットコレクションを適用する方法

上の図に基づいて、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);
ログイン後にコピー

出力結果:

Javaでセットコレクションを適用する方法

上記のコードを使用して結果を出力します比較すると、Disordered と Ordered の違いがわかります。前者は受信データの順序を乱しますが、後者は入力データの順序でデータを格納するため、出力は順序付けられた状態になります。

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);
ログイン後にコピー

出力結果:

Javaでセットコレクションを適用する方法

#上記のコードと出力結果を通じて、 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=&#39;" + name + &#39;\&#39;&#39; +
                ", age=" + age +
                ", classroom=&#39;" + classroom + &#39;\&#39;&#39; +
                &#39;}&#39;;
    }
}
//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;
    }
}
ログイン後にコピー

出力結果 (年齢に基づく比較):

Javaでセットコレクションを適用する方法

オーバーライドされたメソッドでは、戻り後のコードによって、オブジェクトがどのような基準に従って比較されるかが決定されます。比較ルールは次のとおりです。

  • 最初の要素が 2 番目の要素より大きいとみなされる場合、正の整数が返されます。

  • 最初の要素が 2 番目の要素より小さいとみなされる場合は、2 つの要素に対して負の整数を返します。

  • 最初の要素が 2 番目の要素と等しいと思われる場合は、0 を返します。現時点では、Treeset コレクションは 1 つの要素のみを保持し、2 つは重複とみなされます。

方法 2: コレクションには、ルール定義用の独自のコンパレータ オブジェクトが付属します

Set<People> p = new TreeSet<>(new Comparator<People>() {
            @Override
            public int compare(People o1, People o2) {
                return o1.getAge()-o2.getAge();
            }
        });
ログイン後にコピー
オリジナルに基づいてコレクションの作成を変更し、その比較基準は以前のものと同じです 定義方法は同様ですが、以前の方法と比較して、この方法はより便利で高速です。以前に学習したラムダ式を使用して、このコード ブロックを簡素化できます。

rree

以上がJavaでセットコレクションを適用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

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

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

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

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

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

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

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

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

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

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

See all articles