English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Java プロセス制御

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 異常処理

Java リスト(List)

Java キュー(キュー)

Java Mapコレクション

Java Setコレクション

Java 入出力(I/O)

Java Reader/Writer

Java 他のトピック

Java Set インターフェース

このチュートリアルでは、JavaのSetインターフェース及其メソッドについて学びます。

Java CollectionsフレームワークのSetインターフェースは、Javaの数学的な集合機能を提供します。これはCollectionインターフェースを継承しています。

Listインターフェースとは異なり、Setコレクションは重複の要素を含むことができません。

Setを実装するクラス

Setはインターフェースであるため、オブジェクトを作成することができません。

Setインターフェースの機能を使用するために、以下のクラスを使用できます:

これらのクラスはCollectionsフレームワークで定義され、Setインターフェースを実装しています。

Setを継承するインターフェース

このSetインターフェースはこれらのサブインターフェースも拡張しています:

Setを使用する方法は?

JavaでSetを使用するには、java.util.Setパッケージをインポートする必要があります。

//HashSetを使用してSetを実装
Set<String> animals = new HashSet<>();

ここでは、Setインターフェースを実装するSetオブジェクト「animals」を作成しました。Setインターフェースを実装するためにHashSetクラスを使用しています。

Setのメソッド

SetインターフェースはCollectionインターフェースのすべてのメソッドを含んでいます。なぜなら、CollectionはSetのスーパーオブジェクトであるからです。

Setインターフェースでは、Collectionインターフェースの一部の常用メソッドも提供されています:

  • add() - 指定された要素を集合に追加します

  • addAll() - 指定された集合のすべての要素を集合に追加します

  • iterator() -迭代器を返します。この迭代器を使用して、集合内の要素を順序でアクセスできます

  • remove() - 集合から指定された要素を削除します

  • removeAll() - 指定された別の集合に存在するすべての要素を集合から削除します

  • keepAll()  -指定された別の集合にまだ存在するすべての要素を集合内に保持します

  • clear() - 集合からすべての要素を削除します

  • size() - 集合の長さ(要素数)を返します

  • toArray() - 集合内のすべての要素を含む配列を返します

  • contains() -  指定された要素を含んでいる場合、trueを返します

  • containsAll() - 指定された集合のすべての要素を含んでいる場合、trueを返します

  • hashCode() -ハッシュコード値(集合内の要素のアドレス)を返します

Set集合演算

Java Setインターフェースは、並集合、交集合、部分集合などの基本的な数学集合演算を実行できます

  • 並集合 - 二つの集合xとyの並集合を取得するには、x.addAll(y)を使用できます

  • 交集合 - 二つの集合xとyの交集合を取得するには、x.retainAll(y)を使用できます

  • 部分集合 - xがyの部分集合であるかを確認するには、y.containsAll(x)を使用できます

Setインターフェースの実装

1.HashSetクラスを実装

import java.util.Set;
import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        //HashSetクラスを使用して集合を作成
        Set<Integer> set1 = new HashSet<>();
        //要素をsetに追加1
        set1.add(2);
        set1.add(3);
        System.out.println("Set1: " + set1);
        //HashSetクラスを使用して別の集合を作成
        Set<Integer> set2 = new HashSet<>();
        //要素を追加
        set2.add(1);
        set2.add(2);
        System.out.println("Set2: " + set2);
        //二つの集合の並集合
        set2.addAll(set1);
        System.out.println("並集合は: " + set2);
    }
}

出力結果

Set1: [2, 3]
Set2: [1, 2]
並集合は: [1, 2, 3]

HashSetについてもっと詳しく知りたい場合は、以下を訪問してくださいJava HashSet

2.TreeSetクラスを実装

import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        //TreeSetクラスを使用して集合を作成
        Set<Integer> numbers = new TreeSet<>();
        // 要素をset集合に追加
        numbers.add(2);
        numbers.add(3);
        numbers.add(1);
        System.out.println("TreeSet: " + numbers);
        //要素にiterator()を使用してアクセス
        System.out.print("使用iterator()を使用して要素にアクセスする: ");
        Iterator<Integer> iterate = numbers.iterator();
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

出力結果

TreeSet: [1, 2, 3]
iterator()を使用して要素にアクセスする: 1, 2, 3,

TreeSet の詳細情報を知りたい場合は、以下のサイトにアクセスしてくださいJava TreeSet

今では Set が何かを知っています。次のチュートリアルでは、EnumSet、HashSet、LinkedHashSet、TreeSetなどのクラスでその実装を見ていきます。