広告

Java : EnumSet (列挙型のセット) - API使用例

EnumSet (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。


概要

列挙型と一緒に使用するための特殊なSet実装です。 enumセット内の要素はすべて、セットの作成時に、指定された単一のenum型から明示的または暗黙的に生成される必要があります。

クラス構成

EnumSet クラスは、列挙型(Enum) を要素とする Set の実装です。

final var set = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
System.out.println(set.size()); // 3

System.out.println(set.contains(DayOfWeek.MONDAY)); // true
System.out.println(set.contains(DayOfWeek.TUESDAY)); // true
System.out.println(set.contains(DayOfWeek.SUNDAY)); // false

メソッド

static <E extends Enum<E>> EnumSet<E> allOf (Class<E> elementType)

指定された要素型のすべての要素を含むenumセットを作成します。

final var set = EnumSet.allOf(DayOfWeek.class);

// [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
System.out.println(set);

EnumSet<E> clone ()

このセットのコピーを返します。

final var set = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]

final var cloned = set.clone();
System.out.println(cloned); // [MONDAY, TUESDAY, WEDNESDAY]

static <E extends Enum<E>> EnumSet<E> complementOf (EnumSet<E> s)

指定されたenumセットと同じ要素型を使用してenumセットを作成します。最初は、指定されたセットに含まれないこの型の要素がすべて含められます。

final var src = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(src); // [MONDAY, TUESDAY, WEDNESDAY]

final var set = EnumSet.complementOf(src);
System.out.println(set); // [THURSDAY, FRIDAY, SATURDAY, SUNDAY]

static <E extends Enum<E>> EnumSet<E> copyOf (Collection<E> c)

指定されたコレクションから初期化されたenumセットを作成します。

final Collection<DayOfWeek> c = List.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(c); // [MONDAY, TUESDAY, WEDNESDAY]

final var set = EnumSet.copyOf(c);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]

static <E extends Enum<E>> EnumSet<E> copyOf (EnumSet<E> s)

指定されたenumセットと同じ要素型を使用して、enumセットを作成します。最初は、同じ要素を含むenumセットを作成します(同じ要素が存在する場合)。

final var s = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(s); // [MONDAY, TUESDAY, WEDNESDAY]

final var set = EnumSet.copyOf(s);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]

static <E extends Enum<E>> EnumSet<E> noneOf (Class<E> elementType)

指定された要素型を使用して空のenumセットを作成します。

final var set = EnumSet.noneOf(DayOfWeek.class);
System.out.println(set); // []
System.out.println(set.isEmpty()); // true

set.add(DayOfWeek.MONDAY);
System.out.println(set); // [MONDAY]
System.out.println(set.size()); // 1

set.add(DayOfWeek.TUESDAY);
System.out.println(set); // [MONDAY, TUESDAY]
System.out.println(set.size()); // 2

static <E extends Enum<E>> EnumSet<E> of (E e)

指定された要素を最初に含むenumセットを作成します。

final var set = EnumSet.of(DayOfWeek.MONDAY);
System.out.println(set); // [MONDAY]
System.out.println(set.size()); // 1

static <E extends Enum<E>> EnumSet<E> of (E e1, E e2)

指定された要素が最初に含まれるenumセットを作成します。

final var set = EnumSet.of(DayOfWeek.MONDAY, DayOfWeek.TUESDAY);
System.out.println(set); // [MONDAY, TUESDAY]
System.out.println(set.size()); // 2

static <E extends Enum<E>> EnumSet<E> of (E first, E... rest)

指定された要素が最初に含まれるenumセットを作成します。

final var set = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
        DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY]
System.out.println(set.size()); // 6

static <E extends Enum<E>> EnumSet<E> of (E e1, E e2, E e3)

指定された要素が最初に含まれるenumセットを作成します。

final var set = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY]
System.out.println(set.size()); // 3

static <E extends Enum<E>> EnumSet<E> of (E e1, E e2, E e3, E e4)

指定された要素が最初に含まれるenumセットを作成します。

final var set = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
        DayOfWeek.THURSDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY]
System.out.println(set.size()); // 4

static <E extends Enum<E>> EnumSet<E> of (E e1, E e2, E e3, E e4, E e5)

指定された要素が最初に含まれるenumセットを作成します。

final var set = EnumSet.of(
        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,
        DayOfWeek.THURSDAY, DayOfWeek.FRIDAY);
System.out.println(set); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
System.out.println(set.size()); // 5

static <E extends Enum<E>> EnumSet<E> range (E from, E to)

指定された2つの端点により定義される範囲内の要素すべてを最初に含むenumセットを作成します。

final var set = EnumSet.range(DayOfWeek.TUESDAY, DayOfWeek.FRIDAY);
System.out.println(set); // [TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
System.out.println(set.size()); // 4

AbstractSetで宣言されたメソッド

equals, hashCode, removeAll

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

AbstractCollectionで宣言されたメソッド

add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString

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

Collectionで宣言されたメソッド

parallelStream, removeIf, stream, toArray

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

Iterableで宣言されたメソッド

forEach

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

Setで宣言されたメソッド

add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray

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


関連記事

ページの先頭へ