広告

Java : Set (セット) - API使用例

Set (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

重複要素のないコレクションです。 すなわち、セットは、e1.equals(e2)であるe1とe2の要素ペアは持たず、null要素を最大1つしか持ちません。 その名前が示すように、このインタフェースは、数学で言う集合の抽象化をモデル化します。

クラス構成

Set は、Java コレクション・フレームワークの1つです。

重複のない複数の要素を管理します。
大量の要素を追加しても、基本操作である addremove, contains などのパフォーマンス低下が起こらないのが特徴です。

関連記事:Set(セット)の基本

final Set<String> set = new HashSet<>();

set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]
System.out.println(set.size()); // 3

System.out.println(set.contains("a")); // true
System.out.println(set.contains("b")); // true
System.out.println(set.contains("X")); // false

メソッド

boolean add (E e)

指定された要素がセット内になかった場合、セットに追加します(オプションの操作)。

final Set<String> set = new HashSet<>();
System.out.println(set); // []

System.out.println(set.add("a")); // true
System.out.println(set); // [a]

System.out.println(set.add("b")); // true
System.out.println(set); // [a, b]

System.out.println(set.add("c")); // true
System.out.println(set); // [a, b, c]

System.out.println(set.add("a")); // false
System.out.println(set); // [a, b, c]

boolean addAll (Collection<? extends E> c)

指定されたコレクションのすべての要素について、その要素がこのセット内にない場合、セットに追加します(オプションの操作)。

final var src = Set.of("a", "b", "c");

{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.addAll(Set.of("d", "e", "f"))); // true
    System.out.println(set);  // [a, b, c, d, e, f]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.addAll(Set.of("a", "b", "c"))); // false
    System.out.println(set); // [a, b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.addAll(Set.of("a", "c", "e", "f"))); // true
    System.out.println(set); // [a, b, c, e, f]
}

void clear ()

セットからすべての要素を削除します(オプションの操作)。

final Set<String> set = new HashSet<>();
System.out.println(set); // []

set.add("a");
System.out.println(set); // [a]

set.add("b");
System.out.println(set); // [a, b]

set.clear();
System.out.println(set); // []

boolean contains (Object o)

指定された要素がこのセットに含まれている場合にtrueを返します。

final var set = Set.of("a", "b", "c");
System.out.println(set); // [a, b, c]

System.out.println(set.contains("")); // false
System.out.println(set.contains("a")); // true
System.out.println(set.contains("b")); // true
System.out.println(set.contains("c")); // true

System.out.println(set.contains("X")); // false
System.out.println(set.contains("abc")); // false

boolean containsAll (Collection<?> c)

指定されたコレクションのすべての要素がこのセットに含まれている場合にtrueを返します。

final var set = Set.of("a", "b", "c");
System.out.println(set); // [c, b, a]

System.out.println(set.containsAll(Set.<String>of())); // true

System.out.println(set.containsAll(Set.of("a"))); // true
System.out.println(set.containsAll(Set.of("a", "b"))); // true
System.out.println(set.containsAll(Set.of("b", "a"))); // true
System.out.println(set.containsAll(Set.of("c", "b", "a"))); // true

System.out.println(set.containsAll(Set.of("X"))); // false
System.out.println(set.containsAll(Set.of("a", "X"))); // false
System.out.println(set.containsAll(Set.of("a", "b", "c", "X"))); // false

static <E> Set<E> copyOf (Collection<? extends E> coll)

指定されたCollectionの要素を含む「変更不可能なセット」を返します。

final Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]

final var copiedSet = Set.copyOf(set);
System.out.println(copiedSet); // [a, b, c]

set.add("d");
System.out.println(set); // [a, b, c, d]
System.out.println(copiedSet); // [a, b, c]

try {
    copiedSet.add("d");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

boolean equals (Object o)

指定されたオブジェクトがセットと同じかどうかを比較します。

final var set = Set.of("a", "b", "c");
System.out.println(set); // [a, b, c]

System.out.println(set.equals(Set.of("a"))); // false
System.out.println(set.equals(Set.of("a", "b"))); // false
System.out.println(set.equals(Set.of("a", "b", "c"))); // true
System.out.println(set.equals(Set.of("c", "b", "a"))); // true
final var set = Set.of("a", "b", "c");
System.out.println(set); // [a, b, c]

final Set<String> hashSet = new HashSet<>(set);
System.out.println(hashSet); // [a, b, c]
System.out.println(set.equals(hashSet)); // true

final Set<String> treeSet = new TreeSet<>(set);
System.out.println(treeSet); // [a, b, c]
System.out.println(set.equals(treeSet)); // true

final var list = new ArrayList<>(set);
System.out.println(list); // [a, b, c]
System.out.println(set.equals(list)); // false

int hashCode ()

セットのハッシュ・コード値を返します。

final var set1 = Set.of("a", "b", "c");
System.out.println(set1.hashCode()); // 294

final var set2 = Set.of(1, 2, 3);
System.out.println(set2.hashCode()); // 6
final Set<String> set1 = new LinkedHashSet<>();
set1.add("a");
set1.add("b");
set1.add("c");

System.out.println(set1); // [a, b, c]
System.out.println(set1.hashCode()); // 294

final Set<String> set2 = new LinkedHashSet<>();
set2.add("c");
set2.add("b");
set2.add("a");

System.out.println(set2); // [c, b, a]
System.out.println(set2.hashCode()); // 294

boolean isEmpty ()

このセットに要素が1つも含まれていない場合にtrueを返します。

final Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]
System.out.println(set.isEmpty()); // false

set.clear();
System.out.println(set); // []
System.out.println(set.isEmpty()); // true

Iterator<E> iterator ()

セット内の各要素についてのイテレータを返します。

final var set = Set.of("aaa", "bbb", "ccc");
System.out.println(set); // [aaa, ccc, bbb]

final var it = set.iterator();

System.out.println("-- forEachRemaining --");
it.forEachRemaining(System.out::println);

// 結果
// ↓
//-- forEachRemaining --
//aaa
//ccc
//bbb

static <E> Set<E> of ()

ゼロ要素を含む変更不可能な集合を返します。

final var set = Set.of();
System.out.println(set); // []
System.out.println(set.size()); // 0

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1)

1つの要素を含む変更不可能なセットを返します。

final var set = Set.of("a");
System.out.println(set); // [a]
System.out.println(set.size()); // 1

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E... elements)

任意の数の要素を含む変更不可能な集合を返します。

final var set = Set.of(
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
        "k", "l", "m", "n"
);
System.out.println(set); // [c, d, e, f, g, h, i, j, k, l, m, n, a, b]
System.out.println(set.size()); // 14

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2)

2つの要素を含む変更不可能なセットを返します。

final var set = Set.of("a", "b");
System.out.println(set); // [b, a]
System.out.println(set.size()); // 2

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3)

3つの要素を含む変更不可能な集合を返します。

final var set = Set.of("a", "b", "c");
System.out.println(set); // [b, a, c]
System.out.println(set.size()); // 3

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4)

4つの要素を含む変更不可能な集合を返します。

final var set = Set.of("a", "b", "c", "d");
System.out.println(set); // [b, a, d, c]
System.out.println(set.size()); // 4

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4, E e5)

5つの要素を含む変更不可能なセットを返します。

final var set = Set.of("a", "b", "c", "d", "e");
System.out.println(set); // [e, d, c, b, a]
System.out.println(set.size()); // 5

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4, E e5, E e6)

6つの要素を含む変更不可能な集合を返します。

final var set = Set.of("a", "b", "c", "d", "e", "f");
System.out.println(set); // [f, e, d, c, b, a]
System.out.println(set.size()); // 6

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4, E e5, E e6, E e7)

7つの要素を含む変更不可能な集合を返します。

final var set = Set.of("a", "b", "c", "d", "e", "f", "g");
System.out.println(set); // [g, f, e, d, c, b, a]
System.out.println(set.size()); // 7

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8)

8つの要素を含む変更不可能なセットを返します。

final var set = Set.of("a", "b", "c", "d", "e", "f", "g", "h");
System.out.println(set); // [h, g, f, e, d, c, b, a]
System.out.println(set.size()); // 8

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9)

9つの要素を含む変更不可能な集合を返します。

final var set = Set.of("a", "b", "c", "d", "e", "f", "g", "h", "i");
System.out.println(set); // [a, i, h, g, f, e, d, c, b]
System.out.println(set.size()); // 9

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

static <E> Set<E> of (E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10)

10個の要素を含む変更不可能なセットを返します。

final var set = Set.of("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
System.out.println(set); // [j, i, h, g, f, e, d, c, b, a]
System.out.println(set.size()); // 10

try {
    set.add("z");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

boolean remove (Object o)

指定された要素がセット内にあった場合、セットから削除します(オプションの操作)。

final var src = Set.of("a", "b", "c");

{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("")); // false
    System.out.println(set); // [a, b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("a")); // true
    System.out.println(set); // [b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("b")); // true
    System.out.println(set); // [a, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("X")); // false
    System.out.println(set); // [a, b, c]
}

boolean removeAll (Collection<?> c)

このセットから、指定されたコレクションに含まれる要素をすべて削除します(オプションの操作)。

final var src = Set.of("a", "b", "c");

{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.<String>of())); // false
    System.out.println(set); // [a, b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a"))); // true
    System.out.println(set); // [b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a", "b"))); // true
    System.out.println(set); // [c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("b", "a"))); // true
    System.out.println(set); // [c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a", "b", "c"))); // true
    System.out.println(set); // []
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("X", "Y"))); // false
    System.out.println(set); // [a, b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a", "X"))); // true
    System.out.println(set); // [b, c]
}

boolean retainAll (Collection<?> c)

セット内の要素のうち、指定されたコレクション内にある要素だけを保持します(オプションの操作)。

final var src = Set.of("a", "b", "c");

{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.<String>of())); // true
    System.out.println(set); // []
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("a"))); // true
    System.out.println(set); // [a]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("a", "b"))); // true
    System.out.println(set); // [a, b]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("b", "a"))); // true
    System.out.println(set); // [a, b]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("a", "b", "c"))); // false
    System.out.println(set); // [a, b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("a", "b", "c", "X", "Y"))); // false
    System.out.println(set); // [a, b, c]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("X", "a", "b", "Y"))); // true
    System.out.println(set); // [a, b]
}
{
    final Set<String> set = new HashSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.retainAll(Set.of("X", "Y"))); // true
    System.out.println(set); // []
}

int size ()

セット内の要素数(そのカーディナリティ)を返します。

final var set1 = Set.of();
System.out.println(set1); // []
System.out.println(set1.size()); // 0

final var set2 = Set.of("a", "b", "c");
System.out.println(set2); // [a, b, c]
System.out.println(set2.size()); // 3

default Spliterator<E> spliterator ()

このセット内の要素に対するSpliteratorを作成します。

final var set = Set.of("aaa", "bbb", "ccc");
System.out.println(set); // [bbb, ccc, aaa]

final var spliterator = set.spliterator();

System.out.println("-- forEachRemaining --");
spliterator.forEachRemaining(System.out::println);

// 結果
// ↓
//-- forEachRemaining --
//bbb
//ccc
//aaa

Object[] toArray ()

セット内のすべての要素が格納されている配列を返します。

final var set = Set.of("a", "b", "c");
System.out.println(set); // [a, b, c]

final Object[] array = set.toArray();
System.out.println(Arrays.toString(array)); // [a, b, c]

<T> T[] toArray (T[] a)

セット内のすべての要素を格納している配列を返します。返される配列の実行時の型は、指定された配列の型になります。

final var set = Set.of("a", "b", "c");
System.out.println(set); // [a, b, c]

final String[] ret = set.toArray(new String[0]);
System.out.println(Arrays.toString(ret)); // [a, b, c]
final var set = Set.of("a", "b", "c");
System.out.println(set); // [a, b, c]

{
    final String[] array = new String[3];
    System.out.println(Arrays.toString(array)); // [null, null, null]

    final var ret = set.toArray(array);
    System.out.println(Arrays.toString(array)); // [a, b, c]
    System.out.println(Arrays.toString(ret)); // [a, b, c]
}
{
    final String[] array = new String[5];
    System.out.println(Arrays.toString(array)); // [null, null, null, null, null]

    final var ret = set.toArray(array);
    System.out.println(Arrays.toString(array)); // [a, b, c, null, null]
    System.out.println(Arrays.toString(ret)); // [a, b, c, null, null]
}
{
    final String[] array = new String[1];
    System.out.println(Arrays.toString(array)); // [null]

    final var ret = set.toArray(array);
    System.out.println(Arrays.toString(array)); // [null]
    System.out.println(Arrays.toString(ret)); // [a, b, c]
}

Collectionで宣言されたメソッド

parallelStream, removeIf, stream, toArray

Java API 使用例 : Collection」をご参照ください。

Iterableで宣言されたメソッド

forEach

Java API 使用例 : Iterable」をご参照ください。


関連記事

ページの先頭へ